我有我的编译器的抱怨当我做了一些愚蠢的像一个错字上的变量名称,但JavaScript有一个习惯会让这通过。

是否有任何静态的分析工具,用于JavaScript?

有帮助吗?

解决方案

我同意JSLint是最好的地方开始。注意, JavaScript林特 是截然不同 JSLint.我还建议检查了 JSure, ,这在我有限的测试有没有更好的比任何人,虽然有一些粗糙的边缘,在实施—英特尔Mac版坠毁,机上启动对我来说,虽然支持版本,跑了好即使是在英特尔和Linux版本跑的现。(开发,伯克杜拉克,说他会回到我的时候这是固定的,但是我没有听说过他。)

不要指望尽可能多的从JavaScript静态分析为你从一个良好C检查。作为杜拉克告诉我,"任何非微不足道的分析,是非常困难的,由于Javascript的动态性质。"

(另一,甚至是更隐蔽的Mac-只有错误的,这个时间与JSLint的Konfabulator部件:拖BBEdit文件的图标上的部件移动的文件垃圾桶。开发,道格拉斯Crockford,没有尝试过的部件上。)

10August2009年:今天在 静态分析讨论会, 西蒙霍尔姆森提出了一个纸上 TAJS:类型分析JavaScript, 写有安德斯*和彼得*默勒Thiemann.这纸没有提及上述工具,但是詹森告诉我他会看着他们中的一些并不是留下深刻的印象。代码TAJS应提供某个时候这个夏天。

其他提示

更新的答案,2017年:是的。使用ESLint. http://eslint.org


除了 JSLint (已经提到在 闪谢里丹的答复)和 封闭编译器 (先前提到的 awhyte的答案),我们也已经得到了很多利益运行 JSHintPHP CodeSniffer.作为2012年起,所有四个工具都是免费的开放源代码和有一个庞大和活跃的开发者社区在他们身后。他们每一位不同的(而我认为,互补)在该种检查他们的执行:

JSLint 设计,并且仍然是道格拉斯Crockford的个人掉毛工具。它的船只有一个 伟大的 默认的规则--Crockford自己的, 不断更新 因为他 持续学习 关于JavaScript和其陷阱。JSLint是 非常固执己见 这是一般 看作是一件好事。 因此,有的(故意)a 限量 你可以做到的配置或禁用单独规则。但是,这可以使得它很难适用JSLint遗留的代码。

JSHint 非常类似于JSLint(实际上它 开始生活 作为JSLint叉的),但它是更容易/可能的 配置或禁用 所有的JSLint的检查通过命令行选项或通过一个 .jshintrc 文件.

我特别喜欢,我可以告诉JSHint报告 所有 的错误,在文件,即使有数以百计的错误。相比之下,虽然JSLint确实有一个 maxerr 配置的选择,它将通常被保释出相对较早的时候尝试过程的文件,含有大量错误。

封闭编译器 是极为有用的是,如果代码 会不会 汇编关闭,你可以感到非常肯定的说码 深深的大清洗在某些基本方式。封闭汇编可能是最接近的东西,那就是在JS世界"解释"法检查喜欢 php -lruby -c

关闭还 警告你关于潜在的问题 如丢失的参数和未申报或重新界定的变量。如果你没有看到警告你期望的尝试增加的警示级别通过调用封闭与的一个选项 --warning_level VERBOSE

PHP CodeSniffer 可以分析JavaScript 以及PHP和CSS。CodeSniffer船舶与几个不同的编码标准,(说 phpcs -i 看到他们),其中包括许多有用的嗅着JavaScript code包括检查针对 内嵌式控制结构多余的空白.

这里是一个 列表JavaScript嗅探 在PHP CodeSniffer为的版本1.3.6和这里是一个 定义规则,允许你来运行它们所有的一次。 使用定义的规则,很容易 挑选和选择规则 你想申请。你甚至可以 写你自己的嗅着 如果你想要强制执行特别是"房子的风格"不支持。据我所知CodeSniffer是唯一的工具的四个在这里提到,支持定制和建立新的静态分析的规则。一个警告:CodeSniffer也是最慢的运行的任何工具提及。

谷歌的“关闭” JS编译在编译时会产生配置的警告和错误。这肯定发现拼写错误的变量和方法,加元数错误。如果你愿意写JsDoc的闭合方式,它可以做很多类型的信息了。

在锐“压缩机”工具可以产生警告过,但是还没有尝试过。

我没有多少运气的的Aptana IDE,基于Eclipse,但其他人都喜欢它。见JS的IDE堆栈溢出讨论。

在的IntelliJ IDE,最后我检查这是不是免费的,具有frickin'优良JS支持。它会检测并突出显示拼错VAR和您键入的方法,等等。它有自动完成了。

在总结的JSLint,JSHint,柏拉图,ESLint,谷歌关闭棉短绒是可用的工具。 我遇到的安装问题,而试图从谷歌关闭棉短绒为Windows。但是,它确实提到的网页,它支持Windows是实验性的。 我发现并试图另一个工具,它工作得很好。这里是链接吧: http://esprima.org/

此外,这是所述的github链路用于工具Esprima: https://github.com/ariya/esprima

您可以看到一些工具的JavaScript静态代码分析在此维基

在Wiki所述的工具,而不是在此讯息中提到,是的DeepScan 。 其重点是要找到运行时错误和质量问题,而不是编码棉短绒的约定。它涵盖还打字稿,反应并Vue.js。

您可以尝试一下你的GitHub项目。

我尝试了ESlint和找到它了好的..你还可以添加自定义的规则在那里。。这里是想回购: https://github.com/nzakas/eslint 这里是介绍: http://www.nczonline.net/blog/2013/07/16/introducing-eslint/

更多的安全专注于一般目的清单上可以找到Mozilla Wiki在 安全/B2G/JavaScript code分析

本文件的目的是收集JavaScript code分析 工具适用于包括在未来Mozilla项目或 内部使用。

还有至少一个商业产品的不安全性分析: 打嗝获得新的JavaScript分析能力

最新发布的打嗝包括一个新的发动机的静态分析JavaScript code.这使得打嗝扫描仪报告的范围内出现的新的薄弱环节,其中包括:

  • 基于DOM的XSS
  • JavaScript注射
  • 客户端SQL注射
  • WebSocket劫持
  • 地方文件路径操纵
  • 基于DOM开重定向
  • Cookie操纵
  • 阿贾克斯的请求头操纵
  • DOM基于拒绝服务
  • 网络操纵消息
  • HTML5储存操纵

在商业领域, Coverity静态分析 支持分析JavaScript的版本7.7(mid-2015年)。关于您的具体查询有关的拼写错误,我的宠物项目出现在最新版本(8.0,开始2016年) 并找到打字错误 在名称的程序要素。

作为一个关键的开发项目,请接受我无耻的插件:虽然尚未成熟的 崇敬C/C++分析,Coverity的JavaScript分析股的许多相同的发动机,有相同的重点放在寻找高价值的缺陷与率低的假阳性的缺陷的报告。我们增加我们的重点放在找到安全的缺陷JavaScript(和其他语言),除了寻找一般程序错误。

现在,这里有一些拼写错误,它发现(准确拼写错误留下作为一个运动对于读者,强调如何方便这些可以被忽视的):

merge.js: (稳定的链路) (最新版)

commands-packages-query.js: (稳定的链路) (最新版)

series-pie-tests.js: (稳定的链路) (最新版)

outline_case.js: (稳定的链路) (最新版)

我喜欢的JSLint 为这样的事情......

流程确实静态分析有和无注解。

如果您需要注解,语法是打字稿

兼容

用安装

npm install --global flow-bin

还有一些工具。看看一饮而尽,流动型或许的 SublimeLinter流

JSAnalyse刚刚发布CodePlex上。 它是一个工具,它分析JavaScript文件之间的依赖关系。你甚至可以定义允许的依赖和JSAnalysis检查定义的规则是否满足与否。这使得跟踪有关,即使在大项目的JavaScript的依赖,并有一个干净的架构。

JSAnalyse可以作为命令行工具来执行,或通过在Visual Studio层Diagramm配置。这也很容易融入构建。门控检查插件可以保持依赖性得到控制。

http://jsanalyse.codeplex.com/

我们的 SD的ECMAScript CloneDR 是用于查找精确和近的工具错过跨越大的JavaScript源代码库的重复代码的副本。

它使用语言的语法指导的检测,所以它会发现,尽管格式更改,插入/删除评论克隆,重新命名变量,甚至一些插入/删除语句。

该网站对谷歌的封库中的样本CloneDR运行。

充分披露,我是这背后: http://www.toptensoftware.com/minime其中不缩小,模糊处理,对于合理设置棉绒式检查。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top