我想在不访问JSLint网站的情况下检查我的 JavaScript 文件。
此工具是否有适用于 Windows 的桌面版本?
16 回答
来自http://www.jslint.com/lint.html:
分析是通过在您的机器上运行的脚本完成的。您的脚本不是通过网络发送的。
它也可用作Konfabulator 小部件。您可以通过将文件拖放到小部件上来检查文件。您可以通过双击小部件来重新检查文件。
它也可用于WSH 命令行版本。
它也可以在Rhino 命令行版本中使用。
或者因为 JSLint 是在您的浏览器中运行的 JavaScript 程序 - 您可以获取脚本并在本地运行它。
你也可以在你的机器上使用 JavaScript Lint,
从这里获取
JavaScript Lint
有关于如何将其集成到上述站点上的许多编辑器/IDE 中的说明。我在 UltraEdit 中使用它,效果很好。
从上面的网站
您可以通过多种方式运行 JavaScript Lint:
您可以将其集成到您的 IDE 中,例如 Visual Studio、SciTE 或任何其他支持外部工具的 IDE。当 JavaScript Lint 发现错误时,您的 IDE 会直接将您带到包含错误的行。
您可以通过 Windows 程序员可能更喜欢的 Windows 资源管理器运行它。
您可以使用命令行来集成到您的构建系统中,或者您可能是一名 Linux 程序员并且更喜欢命令行!
这个老问题的附录:jslint.js 的 WScript 版本产生的错误消息与来自任何编译器的错误消息非常不同。
如果您希望它们相似,并且希望能够在命令行中指定 .js 文件的名称,而不是使用标准输入来读取文件,请执行以下操作:
编辑 jslint.js 文件。滚动到底部并找到以下内容:
(function(){if(!JSLINT(WScript.StdIn.ReadAll(),.....
将其(以及随后的所有内容)替换为:
(function(){
var filename = "stdin";
var content= "";
if (WScript.Arguments.length > 0){
filename = WScript.Arguments(0);
var fso = new ActiveXObject("Scripting.FileSystemObject");
//var file = fso.GetFile(filename);
var fs = fso.OpenTextFile(filename, 1);
content = fs.ReadAll();
fs.Close();
fso = null;
fs = null;
} else {
content = WScript.StdIn.ReadAll();
}
if(!JSLINT(content,{passfail:false})){
WScript.StdErr.WriteLine("JSLINT");
for (var i=0; i<JSLINT.errors.length; i++) {
// sample error msg:
// sprintf.js(53,42) JSLINT: Use the array literal notation [].
var e=JSLINT.errors[i];
if (e !== null){
var line = (typeof e.line == "undefined")?'0':e.line;
WScript.StdErr.WriteLine(filename + '(' +line+','+e.character+') JSLINT: '+e.reason);
WScript.StdErr.WriteLine(' ' + (e.evidence||'').replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"));
}
}}}());
这种变化有两件事:
- 允许您在命令行上指定要在其上运行 lint 的文件,而不是作为标准输入。如果根本没有指定文件,标准输入仍然有效。
- 以更类似于大多数 C/C++ 编译器的格式发出错误消息。
然后,在 cmd.exe 提示符下,您可以执行以下操作:
cscript.exe jslint.js MyJavascriptModule.js
您将收到如下错误消息:
JSLINT
MyJavascriptModule.js(7,17) JSLINT: 'xml' is already defined.
var xml = new ActiveXObject("Microsoft.XMLHTTP");
MyJavascriptModule.js(10,5) JSLINT: 'xml' used out of scope.
xml.open("GET", url, true);
MyJavascriptModule.js(11,9) JSLINT: 'xml' used out of scope.
if (xml.overrideMimeType) {
MyJavascriptModule.js(12,9) JSLINT: 'xml' used out of scope.
xml.overrideMimeType('text/plain; charset=x-user-defined');
MyJavascriptModule.js(14,9) JSLINT: 'xml' used out of scope.
xml.setRequestHeader('Accept-Charset', 'x-user-defined');
MyJavascriptModule.js(17,5) JSLINT: 'xml' used out of scope.
xml.onreadystatechange = function() {
MyJavascriptModule.js(28,5) JSLINT: 'xml' used out of scope.
xml.send('');
MyJavascriptModule.js(34,16) JSLINT: Expected '{' and instead saw 'url'.
if (proxy) url = proxy + '?url=' + encodeURIComponent(url);
MyJavascriptModule.js(51,16) JSLINT: Expected '{' and instead saw 'url'.
if (proxy) url = proxy + '?url=' + encodeURIComponent(url);
我知道这是一个旧的,但没有人提到 JSLint 是开源的并且可以在 github 上找到。https://github.com/douglascrockford/JSLint
您可以使用包含的 HTML 页面,或使用以下方法创建自己的界面:
var options = {
browser : true,
plusplus : true,
unparam : true,
maxlen : 120,
indent : 4 // etc
};
if (JSLINT(myCode, options)) {
document.write('Passed!');
} else {
document.write('Failed! :(');
}
document.write('<ul>');
for (i = 0; i < JSLINT.errors.length; i++) {
document.write('<li><b>' + JSLINT.errors[i].line + ':</b> ' + JSLINT.errors[i].reason + '</li>');
}
document.write('</ul>');
您可以将页面保存到硬盘吗?
我们发现JSLint4Java非常好。如果您使用 Ant 来构建您的项目,那么它提供的 Ant 任务特别有用。
只需将 html 页面保存到您的硬盘驱动器,然后将它使用的 .js 文件下载到同一位置。这就是 JavaScript 的美妙之处。
在jslint CLI 选项中提供更多答案(并非全部针对 Windows)
你可以将这家伙制作的工具集成到 Visual Studio 中。
只需禁用您不需要的选项。
Visual Studio 2010有一个不错的扩展。
大多数浏览器都能够保存“整个”页面,这意味着所有外部文件(如样式表、JavaScript 等)也会被下载并正确链接到 HTML 文档中(通常放在 HTML 文件旁边的文件夹中)。因此,绝对可以离线使用该工具。
MiniME 是 JSLint 的替代方案,它在 Windows 下运行,您可能会发现它很有用。
完全披露,我支持:http ://www.toptensoftware.com/minime ,它进行缩小、混淆和一组合理的 lint 样式检查。
使用 Node.js 运行的 JSLint Reporter
易于保持最新状态。
安装Node.js。
将jslint-reporter安装到:
C:\jslint-reporter
下载 JSLint:
C:\jslint-reporter>node wrapper.js --upgrade
测试:
C:\Temp>node C:\jslint-reporter\wrapper.js missing_semicolon.js missing_semicolon.js:1:10:Expected ';' and instead saw 'console'. missing_semicolon.js:2:1:'console' was used before it was defined.
JSLint Node.js 包
易于设置,但您需要依赖包作者来使包含的 JSLint 保持最新:
安装Node.js。
使用Node.js 的包管理器npm安装 JSLint:
C:\>npm -g install jslint
测试:
C:\Temp>jslint missing_semicolon.js missing_semicolon.js #1 Expected ';' and instead saw 'console'. var x = 5 // Line 1, Pos 10
其他解决方案
当然,要运行 JSLint,您也可以使用Rhino或任何其他适用于 Windows 的 JavaScript 实现。
CSE HTML Validator包括 JSLint 并在 Windows 桌面机器上运行。