JSHint 配置浅析

JSHint,发现错误和潜在问题的社区驱动的工具
JSLint 错误解析

单独安装

1
$ npm install jshint -g
1
2
3
4
$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.
1 error

编辑器和IDE插件

Sublime-JSHint

安装

Ctrl+Shift+PCmd+Shift+P
输入 install,选择 Package Control: Install Package
输入 js gutter,选择 JSHint Gutter

使用方法:

Tools -> Command Palette (Ctrl+Shift+P 或者 Cmd+Shift+P) 然后输入 jshint

– 或者 –

Ctrl+Shift+J (或者 Mac 使用 Cmd+Shift+J)

– 或者 –

当前文件右键选择 JSHint -> Lint Code

– 或者 –

打开 JavaScript 文件,菜单 View -> Show Console,然后输入 view.run_command("jshint")

编辑,加载或保存时自动检查

右键 -> JSHint -> Set Plugin Options

三项设置为 true

1
2
3
4
5
{
"lint_on_edit": true,
"lint_on_load": true,
"lint_on_save": true
}

三种配置方式:

通过 --config 标记手动配置

使用 .jshintrc 文件

配置放到项目的 package.json 文件里面, jshintConfig 下面

自定义 .jshintrc 配置文件

JSHint 设置

强制选项

禁用位运算符,位运算符在 JavaScript 中使用较少,经常是把 && 错输成 &

1
bitwise: true

循环或者条件语句必须使用花括号包围

1
curly: true

强制使用三等号

1
eqeqeq: true

兼容低级浏览器 IE 6/7/8/9

1
es3: true

禁止重写原生对象的原型,比如 ArrayDate

1
freeze: true

代码缩进

1
indent: true

禁止定义之前使用变量,忽略 function 函数声明

1
latedef: "nofunc"

构造器函数首字母大写

1
newcap: true

禁止使用 arguments.callerarguments.callee,未来会被弃用, ECMAScript 5 禁止使用 arguments.callee

1
noarg:true

true 时,禁止单引号和双引号混用

1
"quotmark": false

变量未定义

1
"undef": true

变量未使用

1
"unused": true

严格模式

1
strict:true

最多参数个数

1
maxparams: 4

最大嵌套深度

1
maxdepth: 4

复杂度检测

1
maxcomplexity:true

最大行数

1
maxlen: 600

宽松选项

控制“缺少分号”的警告

1
2
"asi": true
"boss": true

忽略 debugger

1
"debug": true

控制 eval 使用警告

1
"evil": true

检查一行代码最后声明后面的分号是否遗漏

1
"lastsemic": true

检查不安全的折行,忽略逗号在最前面的编程风格

1
"laxcomma": true

检查循环内嵌套 function

1
"loopfunc": true

检查多行字符串

1
"multistr": true

检查无效的 typeof 操作符值

1
"notypeof": true

person['name'] vs. person.name

1
"sub": true

new function () { ... }new Object;

1
"supernew": true

在非构造器函数中使用 this

1
"validthis": true

环境

预定义一些全局变量

预定义全局变量 documentnavigatorFileReader

1
"browser": true

定义用于调试的全局变量:consolealert

1
"devel": true

定义全局变量

1
2
"jquery": true,
"node": true