我想使用JSLint,但我对可以访问我未经过滤的源代码的工具持谨慎态度。是否有离线版本或者是否有另一个类似的工具可以lint
离线对 JavaScript 进行“错误检查”?
编辑:一个带有 GUI 的,它向您显示样式化的错误列表,而不是命令行界面?
我想使用JSLint,但我对可以访问我未经过滤的源代码的工具持谨慎态度。是否有离线版本或者是否有另一个类似的工具可以lint
离线对 JavaScript 进行“错误检查”?
编辑:一个带有 GUI 的,它向您显示样式化的错误列表,而不是命令行界面?
如果你喜欢JSLint Web 界面,你可以对本地文件夹执行File
>Save Page As...
和Save as type:
Web Page, complete
(在 Firefox 中,在 Internet Explorer 中执行可能略有不同)。
我将名称更改为jslint.htm
8.3 以下,没有空格。
在本地保存时似乎可以工作。
三件事:
JSLint 可以使用 WSH 或 Rhino 离线运行:
http://www.jslint.com/lint.html#try
编辑:自从提出这个问题以来的两年里,JSLint 已经放弃了对 Rhino 和 WSH 的支持。我鼓励任何对 linting 代码感兴趣的人也可以查看JSHint。它是 JSLint 的一个分支,旨在比原来的更灵活,但也恰好支持 Node、Rhino 和 WSH(当然,除了浏览器之外)。
是的:
基本上,您只需要一个嵌入式 JavaScript 编译器即可运行jslint.js
.
还有另一个 JS Linter,称为JavaScript Lint,它具有在线和可下载的命令行版本。我一直使用可下载的版本。我一直在考虑将它作为钩子的一部分集成到 SVN 中。我比 JSLint 更喜欢它,因为它有更多的选项,而且似乎可以检测到更多的东西。它可以配置为将某些标识符视为预定义的,用于工具包等,这允许它检查未定义变量的使用,我很确定 JSLint 不能这样做。
如果您在 Java 环境中,您可能会发现我的jslint4java工具很有用。它有命令行变体,也可以集成到 ant 脚本中。没有图形用户界面,因为我对这些很烂。:-)
YSlow for Firebug内置了这个功能
我有一个使用SpiderMonkey shell 或Rhino从命令行运行 JSLint 的工具。它还包括一个Vim插件,允许您在编辑文件时按一个按钮自动突出显示任何问题行:
如果您使用 TextMate,我制作了一个运行 JSLint 并在图形窗口中显示输出的包。这一切都是独立的;无需安装其他任何东西即可使用它:
Cory Bennet 有一篇关于命令行 JSLint 的好帖子。您的大部分设置将使SpiderMonkey正常工作。如果您正在运行 Linux,那还不错;如果您使用的是 Windows 和Cygwin ,那就更难了。这里有更多的讨论和与 Rhino 运行时的比较。
更新:2013.11 - 如果您在命令行上使用 node.js(为什么不呢?)您可以同时运行jslint和新的eslint。[注意:我已经向 eshint 贡献了错误报告和测试代码。] 这两者都比我上面的设置更容易......
试试Google Closure Linter。它也比 JSLint 有更多的功能。
由于 JSLint 本身是用 JavaScript 编写的,因此您可以通过在本地复制 HTML 和引用的 JavaScript 文件来离线运行它。IE7 的“另存为...”“网页,完整”功能可以很好地做到这一点。
有一个很棒的 Yahoo Widget:
http://ajaxian.com/archives/jslint-multi
它是开源的,如果您偏执,您可以审核代码。
(来源:googlecode.com)
我在部署脚本中有JSLint 和 Node.js 验证代码,以确保我不会意外推送可能破坏我的网站的代码。它可以节省以后处理客户支持问题的大量时间。
如果您使用 TextMate,则JSLintMate包具有简单的界面,同时支持 JSLint 和 JSHint ,并允许您以各种方式设置自定义选项(例如,每个项目的配置文件,所有项目的全局选项)。
如果您已经使用 ruby gems,那么您可以在一个命令中安装 jslint gem: http ://rubygems.org/gems/jslint
您也可以直接下载源代码,而不是使用浏览器下载。这样做的好处是您可以使用版本控制系统更新它们,并阅读注释的源代码。
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
用浏览器打开。
在 JSLint.com 上重现 Crockford 的内容非常容易。JSLint.com 的 .js 在线版本是一些文件的缩小组合,其中包括一些我不太了解的开销,比如那些ADSAFE
东西。让我们将其剥离为一个最简单的案例包装器。
这是一个网页的代码,它将在同一目录中查找 jslint.js(最新版本的 JSLint 目前可以在 github 中以原始文本的形式找到),并以与 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 网站现在一样。