JSLint
,古老,不可配置,不可扩展,不可禁用许多特性的校验JSHint
,可配置的JSLint版本JSCS
,代码样式检查,只捕获与代码格式化相关的问题,而不是潜在的bug
或错误。已经与 ESLint
合并。ESLint
,易于扩展,可自定义规则,可以插件形式安装更多的规则。一个 linting
工具是解决问题的一个很好的步骤,但是它基于一定的规则发现错误,具有一定的局限性。
要采用更安全的bug
自动收集,建议使用单元测试(unit tests
),代码评审(code reviews
)。
项目地址:
比较:
JSLint,JSHint,ESLint
的区别JS Lint
工具及介绍JavaScript
已经发展蛮长时间了,对应的Lint
工具也是层出不穷,下面介绍一下比较主流的几个Lint
工具(其实是我用过的几个XD
)
JSLint
JSLint
是由Douglas Crockford开发的,可能是最早的JavaScript Lint
工具了吧,它的名字来源于著名的C语言工具Lint
。老道把他认为的非Good Parts
的部分都报了warning
,而且在它的文档中也提到了你应该欣然接受所有的JSLint
的建议。最近看了下,老道还在持续更新着这个项目,而且官网上也有着一个在线的体验工具,可以尝试一下。对了,如果想要使用这个工具,建议看看老道在YouTube
上关于JavaScript
编程风格的视频,讲的还是很幽默的。
JSHint
JSHint
是由Anton Kovalyov
基于JSLint
的代码实现的开源项目,由于JSLint
时期大多数人都在受JSLint
压迫,JSHint
相比较之下,更友好,也更容易配置,所以很快就发展了起来,也得到了众多IDE
和编辑器的支持。但是,由于它是基于JSLint
开发的,自然原有的一些问题它也继承下来了,比如不易扩展,不容易直接根据报错定位到具体的规则配置等,虽然之前好像是有过相关的讨论,但是现在仍然没有什么好的解决办法。好在它发展的不错,很多时候遇到的问题都可以在网上找到相关的解决方案,而且文档也是非常不错的。
ESLint
是由Nicholas C. Zakas
在2013年开始开发的,它的初衷就是为了能让开发者能自定义自己的linting rules
,而且它提供了一套相当完善的插件机制,可以自由的扩展,动态加载配置规则,同时可以方便的根据报错定位到具体的规则配置。而且我比较喜欢它的一点是文档非常详细,可能这也是灵活所必须的吧。在这里还要提一点,ESLint
最初并不是为了造一个重复的轮子,而是作者在实际使用中的需求没有能得到JSHint
团队的回应,所以他就结合当时的JSHint和另一个代码风格的检查工具JSCS
写出来了现在具备代码风格检查,自定义插件扩展功能的ESLint
了。
JSLint
,JSHint
和ESLint
的对比这三个工具各有特色,我只是做一下对比,选择的话,看个人需求就好了。
JSLint
优点
不足
JSHint
优点
不足
ESLint
优点
JSLint
和JSHint
的规则,易于迁移(这肯定是故意的XD)ES6
JSX
的工具不足