![]() |
1
46
我同意JSlint是最好的开始。注意 JavaScript Lint 不同于 JSLint . 我也建议退房 JSure 在我有限的测试中,它比它们中的任何一个都要好,尽管在实现中有一些粗糙的边缘,英特尔的Mac版本在我启动时崩溃了,尽管PowerPC版本甚至在英特尔上运行良好,Linux版本也运行良好。(开发商伯克·杜拉克(BerkeDurak)说,修好后他会给我回电话,但我没有他的消息。) 不要期望JavaScript静态分析的效果和良好的C检查器的效果一样好。正如杜拉克告诉我的,任何非平凡的分析都非常困难,因为javascript的动态特性。 (另一个更为模糊的仅限Mac的bug,这次使用jslint的konfabutator小部件:将bEdit文档图标拖到小部件上会将文档移到垃圾桶中。开发人员道格拉斯·克罗克福德(Douglas Crockford)没有在Mac上尝试过这个小部件。) 2009年8月10日:今天 Static Analysis Symposium 西蒙·霍尔姆·詹森发表了一篇关于 TAJS: Type Analyzer for JavaScript 与安德斯•M勒和彼得•蒂曼合著。论文没有提到上述工具,但Jensen告诉我他看过其中的一些工具,对此没有印象。泰姬陵的代码应该在今年夏天的某个时候发布。 |
![]() |
2
57
更新答案,2017年:是。使用埃斯林。 http://eslint.org 除了 JSLint (已在中提到 Flash Sheridan's answer ) Closure compiler (前面提到 awhyte's answer )我也从跑步中受益匪浅 JSHint 和 PHP CodeSniffer . 截至2012年,这四种工具都是免费开放源码的,并在其背后有一个大型且活跃的开发人员社区。它们在执行的检查类型上各有一点不同(我认为是互补的): 杰斯林特 设计是,仍然是道格拉斯克罗克福德的个人皮毛工具。它与一艘船一起航行 伟大的 默认规则集——Crockford自己的, constantly updated 正如他 continues to learn 关于JavaScript及其缺陷。JSLint是 highly opinionated 这通常是 seen as a good thing. 因此(故意)有 limited amount 您可以配置或禁用单个规则。但这会使将JSlint应用于遗留代码变得困难。
杰辛特
与jslint非常相似(事实上
began life
但更容易/可能
configure or disable
通过命令行选项或通过
我特别喜欢这样,我可以告诉jshint报告
全部的
文件中的错误,即使有数百个错误。相比之下,尽管jslint确实有
闭包编译器
在这方面非常有用,如果代码
不会
用闭包编译,您可以感觉到非常确定的所说代码
是
以某种基本的方式深深地冲洗。闭包编译可能是JS世界中最接近“解释器”语法检查的东西,比如
关闭也
warns you about potential issues
例如缺少参数和未声明或重新定义的变量。如果没有看到预期的警告,请尝试通过调用带有选项的闭包来提高警告级别。
PHP代码转换器
can parse JavaScript
以及php和css。代码嗅探器提供几种不同的编码标准(比如
这里是一个 list of JavaScript sniffs 从1.3.6版开始在php codesniffer中提供,下面是 custom ruleset that would allow you to run them all at once. 使用自定义规则集,很容易 pick and choose the rules 你想申请。你甚至可以 write your own sniffs 如果你想强制执行一个特定的“房子风格”,它是不受支持的开箱即用。Afaik Codesniffer是本文中提到的四个工具中唯一支持定制和创建新静态分析规则的工具。不过需要注意的是:代码嗅探器也是上述工具中运行最慢的。 |
![]() |
3
20
Google's "Closure" JS compiler 在编译时生成可配置的警告和错误。它肯定会发现拼写错误的变量和方法,以及arity错误。如果您愿意用闭包的方式编写JSDoc,那么它也可以对类型信息做很多工作。 yui“compressor”工具也会发出警告,但尚未尝试。 我对建立在Eclipse上的AptanaIDE没有太多运气,但其他人喜欢它。参见JSIDES的堆栈溢出讨论。 IntellijIDE在我上次检查时不是免费的,它有Frickin的优秀JS支持。它将在您键入时检测并突出显示拼写错误的变量和方法,等等。它也有自动完成功能。 |
![]() |
4
11
总之,jslint、jshint、plato、eslint、google closure linter是可用的工具。 我在尝试Google Closing Linter for Windows时遇到了安装问题。但是,它在网页上确实提到它对Windows的支持是实验性的。 我找到并尝试了另一个工作正常的工具。下面是它的链接: http://esprima.org/ 此外,这是工具esprima的github链接: https://github.com/ariya/esprima |
![]() |
5
7
|
![]() |
6
6
我试用了eslint,发现它很好..您也可以在那里添加自定义规则..这里是github repo: https://github.com/nzakas/eslint 下面是它的介绍: http://www.nczonline.net/blog/2013/07/16/introducing-eslint/ |
![]() |
7
4
在Mozilla wiki上可以找到比通用列表更注重安全性的网站 Security/B2G/JavaScript code analysis
另外,至少有一种商业产品进行安全分析: Burp gets new JavaScript analysis capabilities
|
![]() |
8
4
在商业领域, Coverity Static Analysis 支持从7.7版(2015年年中)开始的javascript分析。关于您对打字错误的具体查询,我的宠物项目出现在最新版本中(8.0,2016年初) 是否找到拼写错误 程序元素的名称。 作为项目的关键开发人员,请接受我无耻的插件:虽然还没有成熟到 venerated C/C++ analysis Coverity的javascript分析与同一个引擎有很大的共同之处,它同样关注于以较低的误报率发现高价值缺陷。除了发现一般的编程错误外,我们正在增加对在javascript(和其他语言)中发现安全缺陷的关注。 现在,这里有一些它发现的打字错误(确切的打字错误留给读者作为练习,以强调这些是多么容易被忽视): J.S. (stable link) (latest revision) commands-packages-query.js: (stable link) (latest revision) series-pie-tests.js系列: (stable link) (latest revision) 概述\u case.js: (stable link) (latest revision) |
![]() |
10
3
Flow 执行带有或不带批注的静态分析。 如果需要注释,则语法与 TypeScript . 安装 package 用:
还有一些工具。看一看 gulp-flowtype 也许 SublimeLinter-flow |
![]() |
11
2
JSanalyse刚刚在codeplex上发布。 它是一个分析JavaScript文件之间依赖关系的工具。甚至可以定义允许的依赖项,JSAnalysis检查定义的规则是否得到满足。这样,即使在大型项目中,也可以跟踪JavaScript依赖项,并拥有一个干净的体系结构。 JSanalyse可以作为命令行工具执行,也可以通过Visual Studio层图表进行配置。它也很容易集成到构建中。通过封闭签入,您可以控制依赖项。 |
![]() |
12
1
我们的 SD ECMAScript CloneDR 是一个工具,用于在大型JavaScript源代码库中查找重复代码的精确和接近丢失的副本。 它使用语言语法来指导检测,因此它将查找克隆,不管格式更改、插入/删除的注释、重命名的变量,甚至一些插入/删除的语句。 该站点有一个在谷歌关闭库上运行的克隆程序示例。 |
![]() |
13
0
完全公开,我是幕后黑手: http://www.toptensoftware.com/minime 它可以缩小,模糊和一套合理的皮棉风格的检查。 |
![]() |
Softly · 单选按钮未按预期取值 1 年前 |
|
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
![]() |
assembler · Nextjs没有处理发布请求 1 年前 |
|
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
![]() |
Toniq · javascript为php保存多维数组 1 年前 |