有没有JavaScript静态分析工具? [关闭]

2024-02-22

当我做了一些愚蠢的事情(例如变量名拼写错误)时,我习惯于让编译器抱怨,但 JavaScript 习惯于让这种情况过去。

JavaScript 有静态分析工具吗?


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


此外JSLint http://jslint.org(已经在闪谢里丹的回答 https://stackoverflow.com/a/710837/55478)和闭包编译器 https://developers.google.com/closure/compiler/docs/gettingstarted_app(之前提到过奥怀特的回答 https://stackoverflow.com/a/2220180/55478)我也从跑步中得到了很多好处JSHint http://jshint.com/about and PHP 代码嗅探器 http://pear.php.net/package/PHP_CodeSniffer。截至 2012 年,所有四种工具都是免费开源的,并且背后有一个庞大而活跃的开发者社区。它们执行的检查类型各有不同(我认为是互补的):

JSLintDouglas Crockford 的设计初衷是,现在仍然是 Douglas Crockford 的个人 linting 工具。它附带一个great默认规则集——Crockford自己的,不断更新 https://github.com/douglascrockford/JSLint/commits/master/ as he 关于 JavaScript 及其陷阱。 JSLint 是固执己见 https://gist.github.com/1745829这通常是被视为一件好事。 http://docs.jquery.com/JQuery_Core_Style_Guidelines#JSLint因此(故意)有一个数量有限 http://www.jslint.com/lint.html#options您可以配置或禁用个别规则。但这会使将 ESLint 应用于遗留代码变得困难。

JSHint与 JSLint 非常相似(事实上它开始了生命 http://anton.kovalyov.net/2011/02/20/why-i-forked-jslint-to-jshint/作为 JSLint 分支)但更容易/可能配置或禁用 http://www.jshint.com/docs/所有 JSLint 的检查都是通过命令行选项或通过.jshintrc file https://npmjs.org/package/jshint.

我特别喜欢我可以告诉 JSHint 报告all文件中的错误,即使有数百个错误。相比之下,尽管 JSLint 确实有maxerr配置选项,当尝试处理包含大量错误的文件时,它通常会相对较早地退出。

闭包编译器非常有用,因为如果代码won't用Closure编译,你可以感觉到很确定所说的代码is以某种基本方式深深地影响着。闭包编译可能是 JS 世界中最接近“解释器”语法检查的东西,例如php -l or ruby -c

封也警告您潜在的问题 https://developers.google.com/closure/compiler/docs/error-ref例如缺少参数以及未声明或重新定义的变量。如果您没有看到预期的警告,请尝试通过调用 Closure 并选择以下选项来提高警告级别--warning_level VERBOSE

PHP 代码嗅探器 可以解析JavaScript https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Tokenizers/JS.php以及 PHP 和 CSS。 CodeSniffer 附带了几种不同的编码标准(例如phpcs -i来查看它们),其中包括许多有用的 JavaScript 代码嗅探,包括检查内联控制结构 https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Generic/Sniffs/ControlStructures/InlineControlStructureSniff.php and 多余的空白 https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/SuperfluousWhitespaceSniff.php.

这里有一个JavaScript 嗅探列表 https://gist.github.com/3375708#file_js_code_sniffs.md自版本 1.3.6 起可在 PHP CodeSniffer 中使用,这里是自定义规则集将允许您同时运行它们。 https://gist.github.com/3375708#file_js_sniffs.xml使用自定义规则集,很容易选择规则 http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php你想申请。你甚至可以写你自己的嗅探 http://pear.php.net/manual/en/package.php.php-codesniffer.coding-standard-tutorial.php如果您想强制执行不支持开箱即用的特定“房屋风格”。 Afaik CodeSniffer 是这里提到的四个工具中唯一支持自定义和创建新静态分析规则的工具。但需要注意的是:CodeSniffer 也是所提到的所有工具中运行最慢的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有JavaScript静态分析工具? [关闭] 的相关文章

随机推荐