logo头像
Snippet 博客主题

JavaScript代码检查工具对比

本文于 1798 天之前发表,文中内容可能已经过时。

image

JavaScript代码校验工具能够让你在写代码时避免一些低级的错误。尽管我有很多年的开发经验,我仍然会犯一些语法错误并且忘记处理我的错误。一个好的校验工具或者格式化工具,可以让我避免这些错误,以免浪费我的时间。一个好的校验工具还能确保一个项目保持一个固定的代码风格。

有很多关于JavaScript的校验工具,你怎样选择其中的某一个呢?让我们一起来看看它们有什么样的特性以及优缺点。接下来我要介绍四种常用的选择:JSLint,JSHint,JSCS和ESLint。

Overview

这四个工具的基本用法都是类似的,它们定义了一套规则用来解析和报告js文件里面的问题。它们都可以通过npm来进行安装。可以通过命令行来调用它们,给命令行传递文件参数,也可以作为grunt这一类工具的插件被使用,或者可以集成到编辑器中。它们都支持使用注释作为配置。

以上就是它们所有的相似之处了,每一个工具都有优缺点,只是有些工具相比于其它工具更加有优势。

JSLint

JSLint是这四种校验工具中最为古老的。Douglas Crockford(译注:《JavaScript 语言精粹》的作者)在2002年创造了它,它是强制使用的,为了保留它所认为的JavaScript这门语言的精华部分。如果你认同他的观点,对你而言,JSLint将会是一个好的工具。安装完成马上即可使用。

JSLint的缺点是它是不可以进行配置和扩展的。你不能禁用它的某些特性,并且缺乏文档。它的官网并没有什么用处,例如,它缺少如果将这个工具整合到你的编辑器的任何信息。

优点:

  • 配置规则都已经定好了,安装即可使用(如果你同意这些强制的规则的话)

缺点:

  • JSLint没有可配置文件,你无法对它的规则进行更改
  • 配置规则的数量有限,有些规则无法禁用
  • 不支持自定义规则
  • 缺少文档
  • 很难定位到哪条规则导致了错误

JSCSC

JSCS和以上两个都是不同的,如果不给它一个配置文件或者使用一套预设的规则,它将什么也不做不了,不过你可以从别的网站下载配置文件,所以这并不是什么大问题,并且它有很多的预设规则,比如说jQuery的代码风格的预设规则以及Google的代码风格的预设规则。

它有超过90种不同的规则,并且你可以通过插件创造自定义规则。JSCS也支持自定义输出报告,这使得其更容易与需要其以特定格式输入的工具集成。

JSCS是一个代码风格检查器,这意味着它只捕获与代码格式相关的问题,而不包含潜在的错误。因此,它比其他工具的灵活性更低,但是如果您需要强制执行特定的编码风格,那么JSCS就可以做的很好。

优点:

  • 支持自定义输出报告,可以使其更容易和其它工具进行集成
  • 如果您遵循现有的可用编码风格之一,预设和现成的配置文件可以轻松设置
  • 在报告中,有一个标志包含在规则名之中,所以很容易找出是哪条规则导致了错误
  • 可以利用自定义的插件进行拓展

缺点:

  • 只检测到代码风格的违规,不检测潜在的错误,比如说未使用的变量或者变量的全局污染等
  • 四个工具中性能最差的,但是这并不是一个典型用途的问题

ESLint

ESLint是这四个工具中最新的,它被设计为易于拓展的,具有大量的自定义规则,并且很容易通过插件的形式来安装。它输出简洁的报告,但是默认包含规则的名称,因此你始终知道是那条规则导致了错误的信息。

ESLint的文档多少有些混乱,规则的列表容易查找,并且按逻辑进行分类,但配置说明在某些地方有点混乱。然而,它提供了如何对编辑器进行集成,插件和示例的链接。

优点:

  • 灵活:任何规则都可以切换使用,并且有些规则有额外的配置可以使用
  • 可拓展性好,并且有很多可用的插件
  • 易于理解的输出报告
  • 包含一些其它工具所没有的规则,使得ESLint更容易检测出代码中潜在的错误
  • 对ES6的支持性最好,是唯一支持JSX的工具
  • 支持自定义输出报告

缺点:

  • 需要一些配置
  • 性能差,但这并不是主要的障碍

推荐

一个好的校验工具是捕捉问题非常重要的一步,但是它只能检测出它的规则许可范围之内的错误。对于更多简单明了的bug的捕捉,我建议使用单元测试,Code reviews也是也是不错的方式。