29

我想在不访问JSLint网站的情况下检查我的 JavaScript 文件。
此工具是否有适用于 Windows 的桌面版本?

4

16 回答 16

13

来自http://www.jslint.com/lint.html

分析是通过在您的机器上运行的脚本完成的。您的脚本不是通过网络发送的。

它也可用作Konfabulator 小部件。您可以通过将文件拖放到小部件上来检查文件。您可以通过双击小部件来重新检查文件。

它也可用于WSH 命令行版本。

它也可以在Rhino 命令行版本中使用。

或者因为 JSLint 是在您的浏览器中运行的 JavaScript 程序 - 您可以获取脚本并在本地运行它。

于 2008-10-22T18:39:38.920 回答
9

你也可以在你的机器上使用 JavaScript Lint,
从这里获取
JavaScript Lint

有关于如何将其集成到上述站点上的许多编辑器/IDE 中的说明。我在 UltraEdit 中使用它,效果很好。

从上面的网站

您可以通过多种方式运行 JavaScript Lint:

您可以将其集成到您的 IDE 中,例如 Visual Studio、SciTE 或任何其他支持外部工具的 IDE。当 JavaScript Lint 发现错误时,您的 IDE 会直接将您带到包含错误的行。

您可以通过 Windows 程序员可能更喜欢的 Windows 资源管理器运行它。

您可以使用命令行来集成到您的构建系统中,或者您可能是一名 Linux 程序员并且更喜欢命令行!

于 2008-12-19T17:26:19.710 回答
4

这个老问题的附录:jslint.js 的 WScript 版本产生的错误消息与来自任何编译器的错误消息非常不同。

如果您希望它们相似,并且希望能够在命令行中指定 .js 文件的名称,而不是使用标准输入来读取文件,请执行以下操作:

下载jslint.js,WScript 版本

编辑 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"));
            }
        }}}());

这种变化有两件事:

  1. 允许您在命令行上指定要在其上运行 lint 的文件,而不是作为标准输入。如果根本没有指定文件,标准输入仍然有效。
  2. 以更类似于大多数 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);
于 2010-03-17T22:09:02.277 回答
4

我知道这是一个旧的,但没有人提到 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>');
于 2011-10-10T09:42:32.323 回答
3

您可以将页面保存到硬盘吗?

于 2008-10-22T18:36:41.483 回答
2

我们发现JSLint4Java非常好。如果您使用 Ant 来构建您的项目,那么它提供的 Ant 任务特别有用。

于 2011-01-01T23:11:40.980 回答
1

只需将 html 页面保存到您的硬盘驱动器,然后将它使用的 .js 文件下载到同一位置。这就是 JavaScript 的美妙之处。

于 2008-10-22T18:42:01.083 回答
1

在jslint CLI 选项中提供更多答案(并非全部针对 Windows)

于 2009-08-23T18:54:08.720 回答
1

你可以将这家伙制作的工具集成到 Visual Studio 中。

http://jason.diamond.name/weblog/2008/08/09/verifying-javascript-with-jslint-and-visual-studio/#content

只需禁用您不需要的选项。

于 2010-03-24T13:12:31.780 回答
1

可以在此处找到 Visual Studio 插件。

这有点粗糙,但可以完成工作。

我刚刚加入了该项目,并将在接下来的几个月内对其进行更新。

于 2010-03-24T13:22:41.333 回答
1

Visual Studio 2010有一个不错的扩展

于 2012-02-20T13:39:03.533 回答
1

如果你使用记事本++,有一个 JSLint 插件适合你。

记事本++的 JSLint 插件

您可以从 notepad++ 的插件管理器中找到并安装它。

于 2012-09-22T09:34:17.543 回答
0

大多数浏览器都能够保存“整个”页面,这意味着所有外部文件(如样式表、JavaScript 等)也会被下载并正确链接到 HTML 文档中(通常放在 HTML 文件旁边的文件夹中)。因此,绝对可以离线使用该工具。

于 2008-10-22T19:11:05.580 回答
0

MiniME 是 JSLint 的替代方案,它在 Windows 下运行,您可能会发现它很有用。

完全披露,我支持:http ://www.toptensoftware.com/minime ,它进行缩小、混淆和一组合理的 lint 样式检查。

于 2010-08-25T14:27:00.213 回答
0

使用 Node.js 运行的 JSLint Reporter

易于保持最新状态。

  1. 安装Node.js

  2. jslint-reporter安装到:C:\jslint-reporter

  3. 下载 JSLint:

    C:\jslint-reporter>node wrapper.js --upgrade
    
  4. 测试:

    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 保持最新:

  1. 安装Node.js

  2. 使用Node.js 的包管理器npm安装 JSLint:

    C:\>npm -g install jslint
    
  3. 测试:

    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 实现。

于 2013-09-13T18:28:46.430 回答
0

CSE HTML Validator包括 JSLint 并在 Windows 桌面机器上运行。

于 2015-02-12T15:16:46.553 回答