【发布时间】:2010-09-18 15:03:40
【问题描述】:
我想在不访问JSLint 网站的情况下检查我的 JavaScript 文件。
此工具是否有适用于 Windows 的桌面版本?
【问题讨论】:
标签: javascript jslint
我想在不访问JSLint 网站的情况下检查我的 JavaScript 文件。
此工具是否有适用于 Windows 的桌面版本?
【问题讨论】:
标签: javascript jslint
来自http://www.jslint.com/lint.html:
分析由脚本完成 在你的机器上运行。你的脚本 不通过网络发送。
它也可以作为Konfabulator widget 使用。您可以通过以下方式检查文件 将其拖放到 小部件。您可以通过重新检查文件 双击小部件。
它还提供WSH Command Line 版本。
它还提供Rhino Command Line 版本。
或者由于 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, the WScript version。
编辑 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"));
}
}}}());
这个改变做了两件事:
然后,在 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 options 上的更多答案(并非全部针对 Windows)
【讨论】:
你可以将这家伙制作的工具集成到 Visual Studio 中。
只需禁用您不需要的选项。
【讨论】:
【讨论】:
【讨论】:
【讨论】:
大多数浏览器都能够保存“整个”页面,这意味着所有外部文件(例如样式表、JavaScript 等)也会被下载并正确链接到 HTML 文档中(通常放在 HTML 文件旁边的文件夹中)。所以,绝对可以离线使用该工具。
【讨论】:
MiniME 是 JSLint 的替代品,可在 Windows 下以本机方式运行,您可能会发现它很有用。
完全披露,我支持这个:http://www.toptensoftware.com/minime,它进行缩小、混淆和一组合理的 lint 样式检查。
【讨论】:
易于保持最新状态。
安装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。
使用npm, Node.js 的包管理器,安装 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 或任何其他有效的 JavaScript 实现 当然是在 Windows 上。
【讨论】:
cmd.exe 中添加.`. *Did you run jslint file.js`?*
CSE HTML Validator 包含 JSLint 并在 Windows 桌面计算机上运行。
【讨论】: