我想使用JSLint,但我对可以访问未经过滤的源代码的工具持谨慎态度。是否有离线版本或是否有其他类似工具可以对JavaScript进行“lint
错误检查”?
编辑:一个带有GUI并显示错误的样式列表,而不是命令行界面?
答案 0 :(得分:17)
如果您喜欢JSLint web interface,则可以执行File
> Save Page As...
和Save as type:
Web Page, complete
(在Firefox中,在Internet Explorer中执行此操作可能会略有不同)到本地文件夹。
我将名称更改为jslint.htm
以使其低于8.3且没有空格。
在本地保存似乎有效。
三件事:
答案 1 :(得分:13)
JSLint可以使用WSH或Rhino离线运行:
http://www.jslint.com/lint.html#try
编辑:在问这个问题后的两年里,JSLint已经放弃了对Rhino和WSH的支持。我鼓励任何有兴趣使用linting代码的人也查看JSHint。它是JSLint的一个分支,旨在比原来更灵活,但也恰好支持Node,Rhino和WSH(当然还有浏览器)。
答案 2 :(得分:11)
是:
基本上,您只需要一个嵌入式JavaScript编译器来运行jslint.js
。
答案 3 :(得分:5)
还有另一个名为JavaScript Lint的JS Linter,它具有在线和可下载的命令行版本。我一直使用可下载的版本。我一直在考虑将它作为钩子的一部分集成到SVN中。我比JSLint更喜欢它,因为它有更多选项,似乎可以检测更多东西。它可以被配置为将某些标识符视为预定义的,用于工具包等,这允许它检查未定义变量的使用,我非常确定JSLint不能这样做。
答案 4 :(得分:4)
如果您在Java环境中,您可能会发现我的jslint4java工具很有用。它有一个命令行变体,也可以集成到一个ant脚本中。没有GUI,因为我对那些很糟糕。 : - )
答案 5 :(得分:3)
YSlow for Firebug内置了此功能
答案 6 :(得分:2)
我有一个工具,可以使用SpiderMonkey shell或Rhino从命令行运行JSLint。它还包含一个Vim插件,允许您在编辑文件时按下按钮自动突出显示任何问题行:
答案 7 :(得分:2)
如果您使用TextMate,我已经创建了一个运行JSLint的包,并在图形窗口中显示输出。这一切都是独立的;没有其他东西需要安装才能使用它:
答案 8 :(得分:1)
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提供了错误报告和测试代码。]这些都比我上面的方式更容易设置....
答案 9 :(得分:1)
试试Google Closure Linter。它也有比JSLint更多的功能。
答案 10 :(得分:0)
有一个很棒的Yahoo Widget:
http://ajaxian.com/archives/jslint-multi
它是开源的,如果你是偏执狂,你可以审核代码。
alt text http://jslint-multi-widget.googlecode.com/files/jslint_multi_v1_scrshot.png
答案 11 :(得分:0)
我的部署脚本中有JSLint with Node.js validating code,以确保我不会意外地推送可能破坏我网站的代码。它可以节省大量时间来处理客户支持问题。
答案 12 :(得分:0)
如果你正在使用TextMate,JSLintMate包有一个简单的接口,支持JSLint和JSHint,并允许你以各种方式设置自定义选项(例如,每个项目的配置文件,所有项目的全球选择。)
答案 13 :(得分:0)
如果你已经使用了ruby gems,那么你可以在一个命令中安装jslint gem: http://rubygems.org/gems/jslint
答案 14 :(得分:0)
由于JSLint本身是用JavaScript编写的,因此可以通过在本地复制HTML和引用的JavaScript文件来脱机运行它。 IE7的“另存为...”“网页,完整”功能就可以了。
答案 15 :(得分:0)
您也可以直接下载资源,而不是使用浏览器下载。这样做的好处是您可以使用版本控制系统更新它们,并阅读注释的源代码。
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
。
答案 16 :(得分:0)
重新创建Crockford在JSLint.com上的内容非常容易。 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网站现在都做了。