【发布时间】:2010-10-24 14:24:58
【问题描述】:
我想使用JSLint,但我对可以访问我未过滤源代码的工具持谨慎态度。是否有离线版本或者是否有其他类似的工具可以对 JavaScript 离线进行“lint 错误检查”?
编辑:一个带有 GUI 并显示样式的错误列表,而不是命令行界面?
【问题讨论】:
标签: javascript compiler-errors jslint lint
我想使用JSLint,但我对可以访问我未过滤源代码的工具持谨慎态度。是否有离线版本或者是否有其他类似的工具可以对 JavaScript 离线进行“lint 错误检查”?
编辑:一个带有 GUI 并显示样式的错误列表,而不是命令行界面?
【问题讨论】:
标签: javascript compiler-errors jslint lint
有一个很棒的 Yahoo Widget:
http://ajaxian.com/archives/jslint-multi
它是开源的,如果你偏执,你可以审核代码。
(来源:googlecode.com)
【讨论】:
在 JSLint.com 上重现 Crockford 的内容非常容易。 JSLint.com's online version of the .js 是一些文件的缩小组合,其中包括一些我不太了解的开销,例如 that ADSAFE stuff。让我们将其剥离为一个最简单的案例包装器。
这是一个网页的代码,它将在同一目录中查找 jslint.js(最新版本的 JSLint 目前可以在 in github here as raw text 找到)并以类似的方式启动就像 JSLint.com 现在所做的那样。
<html>
<head>
<script src="jslint.js"></script>
<script>
function jslintalizeMe()
{
var i, divOut, errs, errsMsg = "";
divOut = document.getElementById("errors");
divOut.innerHTML = "";
if (!JSLINT(document.forms[0].elements[0].value))
{
errs = JSLINT.errors;
for (i=0; i < errs.length; i++)
{
err = errs[i];
if (null !== err)
{
if (undefined !== err.id)
{
errsMsg += "Error: "
+ err.code
+ " -- line "
+ err.line
+ " char "
+ err.character + "<br />"
+ " "
+ err.evidence + "<br />"
+ " " +
err.reason + "<br /><br />\n";
}
else
{
errsMsg += err.reason;
}
}
}
divOut.innerHTML = errsMsg;
}
}
</script>
</head>
<body>
<form>
<textarea rows="24" cols="80"
placeholder="// Paste quality code here"></textarea>
<br />
<button onclick="jslintalizeMe();return false;">JSLint</button>
</form>
<div id="errors"></div>
</body>
</html>
这取决于众所周知的读者是否让 GUI 更粘糊糊,但是这个报告和 JSLint 网站现在一样。
【讨论】:
Cory Bennet 有a good post on command-line JSLint。您的大部分设置都将使SpiderMonkey 正常工作。如果您正在运行 Linux,那还不错;如果您使用的是 Windows 和 Cygwin,那就更难了。这里有一些more discussion and comparison with Rhino run-times。
更新:2013.11 - 如果您在命令行上使用 node.js(为什么不呢?)您可以同时运行 jslint 和新的 eslint。 [注意:我已经向 eshint 贡献了错误报告和测试代码。] 这两者都比我上面的设置更容易方式......
【讨论】:
您也可以直接下载源代码,而不是使用浏览器下载。这样做的好处是您可以使用版本控制系统更新它们,并阅读注释的源代码。
git clone https://github.com/douglascrockford/JSLint.git
这将为您提供 HTML 和 JS 源文件,但您不能按原样使用它们。遵循README 中的构建过程。简而言之,您需要 git clone Douglas Crockford 的另外两个 JS 项目,然后将所有三个 git 存储库中的一些 JS 文件连接(并最小化)到 web_jslint.js。
我是这样用 YUI Compressor 做的:
cat ../ADsafe/adsafe.js ../JSON-js/json2.js intercept.js jslint.js > /tmp/web_jslint.uncomp.js
java -jar ../../yuicompressor-2.4.7.jar /tmp/web_jslint.uncomp.js > web_jslint.js
然后用浏览器打开jslint.html。
【讨论】:
我有一个使用SpiderMonkey shell 或Rhino 从命令行运行JSLint 的工具。它还包括一个用于Vim 的插件,允许您在编辑文件时按下按钮自动突出显示任何问题行:
【讨论】:
是的:
基本上,您只需要一个嵌入式 JavaScript 编译器即可运行 jslint.js。
【讨论】:
试试Google Closure Linter。它也比 JSLint 有更多的功能。
【讨论】:
如果您已经使用 ruby gems,那么您可以在一个命令中安装 jslint gem: http://rubygems.org/gems/jslint
【讨论】:
如果您使用 TextMate,JSLintMate 包有一个简单的界面,支持 JSLint 和 JSHint,并允许您以各种方式设置自定义选项(例如,每个项目的配置文件,所有项目的全局选项)项目)。
【讨论】:
JSLint 可以使用 WSH 或 Rhino 离线运行:
http://www.jslint.com/lint.html#try
编辑:在提出这个问题的两年内,JSLint 已经放弃了对 Rhino 和 WSH 的支持。我鼓励任何对 linting 代码感兴趣的人也可以查看 JSHint。它是 JSLint 的一个分支,旨在比原来更灵活,但也恰好支持 Node、Rhino 和 WSH(当然,除了浏览器之外)。
【讨论】:
我的部署脚本中有JSLint with Node.js validating code,以确保我不会意外推送可能破坏我的网站的代码。它可以节省以后处理客户支持问题的大量时间。
【讨论】:
如果您使用 TextMate,我制作了一个运行 JSLint 并在图形窗口中显示输出的包。这一切都是独立的;无需安装其他任何东西即可使用它:
【讨论】:
如果您在 Java 环境中,您可能会发现我的 jslint4java 工具很有用。它有命令行变体,也可以集成到 ant 脚本中。没有图形用户界面,因为我对这些很烂。 :-)
【讨论】:
如果您喜欢JSLint web interface,您可以将File > Save Page As... 和Save as type: Web Page, complete(在Firefox 中,在Internet Explorer 中执行此操作可能略有不同)到本地文件夹。
我将名称更改为jslint.htm 以使其低于 8.3 且不包含空格。
在本地保存时似乎可以工作。
三件事:
【讨论】:
还有另一个 JS Linter,称为 JavaScript Lint,它具有在线和可下载的命令行版本。我一直使用可下载的版本。我一直在考虑将它作为钩子的一部分集成到 SVN 中。我比 JSLint 更喜欢它,因为它有更多的选项,而且似乎可以检测到更多的东西。它可以配置为将某些标识符视为预定义的,用于工具包等,这允许它检查未定义变量的使用,我很确定 JSLint 不能这样做。
【讨论】:
由于 JSLint 本身是用 JavaScript 编写的,因此您可以通过在本地复制 HTML 和引用的 JavaScript 文件来离线运行它。 IE7 的“另存为...”“网页,完整”功能就可以做到这一点。
【讨论】:
YSlow for Firebug 内置了这个功能
【讨论】: