【问题标题】:Is JSLint available for offline use?JSLint 可以离线使用吗?
【发布时间】:2010-10-24 14:24:58
【问题描述】:

我想使用JSLint,但我对可以访问我未过滤源代码的工具持谨慎态度。是否有离线版本或者是否有其他类似的工具可以对 JavaScript 离线进行“lint 错误检查”?

编辑:一个带有 GUI 并显示样式的错误列表,而不是命令行界面?

【问题讨论】:

    标签: javascript compiler-errors jslint lint


    【解决方案1】:

    有一个很棒的 Yahoo Widget:

    http://ajaxian.com/archives/jslint-multi

    它是开源的,如果你偏执,你可以审核代码。


    (来源:googlecode.com

    【讨论】:

      【解决方案2】:

      在 JSLint.com 上重现 Crockford 的内容非常容易。 JSLint.com's online version of the .js 是一些文件的缩小组合,其中包括一些我不太了解的开销,例如 that ADSAFE stuff。让我们将其剥离为一个最简单的案例包装器。

      为 JSLint 构建您自己的 HTML 包装器:

      这是一个网页的代码,它将在同一目录中查找 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>
      

      ^ 来自an old blog post of mine

      这取决于众所周知的读者是否让 GUI 更粘糊糊,但是这个报告和 JSLint 网站现在一样。

      【讨论】:

        【解决方案3】:

        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 贡献了错误报告和测试代码。] 这两者都比我上面的设置更容易方式......

        【讨论】:

          【解决方案4】:

          您也可以直接下载源代码,而不是使用浏览器下载。这样做的好处是您可以使用版本控制系统更新它们,并阅读注释的源代码。

          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

          【讨论】:

            【解决方案5】:

            我有一个使用SpiderMonkey shell 或Rhino 从命令行运行JSLint 的工具。它还包括一个用于Vim 的插件,允许您在编辑文件时按下按钮自动突出显示任何问题行:

            http://github.com/hallettj/jslint.vim/

            【讨论】:

              【解决方案6】:

              是的:

              基本上,您只需要一个嵌入式 JavaScript 编译器即可运行 jslint.js

              【讨论】:

              • 我更喜欢 CLI 版本,您可以在构建后自动生成报告,但每个人都有自己的。
              • 官网不再有Rhino版本。 :(
              【解决方案7】:

              试试Google Closure Linter。它也比 JSLint 有更多的功能。

              【讨论】:

                【解决方案8】:

                如果您已经使用 ruby​​ gems,那么您可以在一个命令中安装 jslint gem: http://rubygems.org/gems/jslint

                【讨论】:

                  【解决方案9】:

                  如果您使用 TextMate,JSLintMate 包有一个简单的界面,支持 JSLint 和 JSHint,并允许您以各种方式设置自定义选项(例如,每个项目的配置文件,所有项目的全局选项)项目)。

                  【讨论】:

                    【解决方案10】:

                    JSLint 可以使用 WSH 或 Rhino 离线运行:

                    http://www.jslint.com/lint.html#try

                    编辑:在提出这个问题的两年内,JSLint 已经放弃了对 Rhino 和 WSH 的支持。我鼓励任何对 linting 代码感兴趣的人也可以查看 JSHint。它是 JSLint 的一个分支,旨在比原来更灵活,但也恰好支持 Node、Rhino 和 WSH(当然,除了浏览器之外)。

                    【讨论】:

                    • 你可以看看JSHint,它是 JSLint 的一个分支,可以在 Node、Rhino 或 WSH 中工作。
                    【解决方案11】:

                    我的部署脚本中有JSLint with Node.js validating code,以确保我不会意外推送可能破坏我的网站的代码。它可以节省以后处理客户支持问题的大量时间。

                    【讨论】:

                      【解决方案12】:

                      如果您使用 TextMate,我制作了一个运行 JSLint 并在图形窗口中显示输出的包。这一切都是独立的;无需安装其他任何东西即可使用它:

                      View JSLint.tmbundle at GitHub

                      【讨论】:

                        【解决方案13】:

                        如果您在 Java 环境中,您可能会发现我的 jslint4java 工具很有用。它有命令行变体,也可以集成到 ant 脚本中。没有图形用户界面,因为我对这些很烂。 :-)

                        【讨论】:

                        【解决方案14】:

                        如果您喜欢JSLint web interface,您可以将File > Save Page As...Save as type: Web Page, complete(在Firefox 中,在Internet Explorer 中执行此操作可能略有不同)到本地文件夹。

                        我将名称更改为jslint.htm 以使其低于 8.3 且不包含空格。

                        在本地保存时似乎可以工作。

                        三件事:

                        1. 这可能违反了他的许可,尽管我保留了版权并且没有修改他的任何代码,而且从技术上讲,我的网络浏览器已经在我的本地 HD 上创建了他网站的副本,所以我不确定我是否是否违规,而且我不是律师,所以我会继续这样做,直到收到一封告诉我停止的信。
                        2. 该页面可能仍然能够以某种方式将您的代码发送到 Internet,尽管这种可能性非常小。也就是说,WSH 或 Rhino 版本可能比本地保存网页中的版本更容易将您提交的代码发送到 Internet(如果您偏执的话)。
                        3. Douglas 所做的任何错误修复或更新都会让您落后。但同样的情况也适用于 WSH 或 Rhino 版本,如果您不定期更新它们。

                        【讨论】:

                        • 这里是“网络界面”的链接,供不知道的人使用。 jslint.com
                        • @Jeremy:在答案中包含了链接。感谢您指出这一点。
                        • JSLint 文档声明您粘贴到 JSLint Web 表单中的代码完全在客户端处理。没有代码被传输。
                        【解决方案15】:

                        还有另一个 JS Linter,称为 JavaScript Lint,它具有在线和可下载的命令行版本。我一直使用可下载的版本。我一直在考虑将它作为钩子的一部分集成到 SVN 中。我比 JSLint 更喜欢它,因为它有更多的选项,而且似乎可以检测到更多的东西。它可以配置为将某些标识符视为预定义的,用于工具包等,这允许它检查未定义变量的使用,我很确定 JSLint 不能这样做。

                        【讨论】:

                          【解决方案16】:

                          由于 JSLint 本身是用 JavaScript 编写的,因此您可以通过在本地复制 HTML 和引用的 JavaScript 文件来离线运行它。 IE7 的“另存为...”“网页,完整”功能就可以做到这一点。

                          【讨论】:

                            【解决方案17】:

                            YSlow for Firebug 内置了这个功能

                            【讨论】:

                            • 哎呀。显然它“将其提交给 JSLint”... 在线。
                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2016-06-06
                            • 2019-07-26
                            • 2019-12-07
                            • 1970-01-01
                            • 1970-01-01
                            • 2014-06-19
                            相关资源
                            最近更新 更多