-
Notifications
You must be signed in to change notification settings - Fork 36
/
.jshintrc
170 lines (149 loc) · 6.25 KB
/
.jshintrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
// 根据 knightli 提供的配置改编, 欢迎试用
// update by kaelyang 2015/07/31
{
// 参考 http://jslinterrors.com/
// ==============预定义变量============
"globals":{
"$": true,
"GLOBAL": true,
"global": true,
"jQuery": true,
"exports": true,
"module": true,
"define": true,
"require": true,
"it": true,
"before": true,
"describe": true,
"beforeEach": true,
"afterEach": true,
"__inline": true,
"__uri": true
},
// ==============Legacy Options============
// 注: 这些选项继承自jslint
// 当变量名以"_"开头或结尾时,是否告警
"nomen": false,
// 是否只允许出现一个var在函数中
"onevar": false,
// 是否遇到第一个错误的时候就终止
"passfail": false,
// 让JSHint检查你的代码是否违反道格拉斯的JS编码风格(严格的空白规范??).
"white": false,
// 最大错误数目,超过则停止分析(默认:50)
"maxerr": 50,
// ==============Environments Options============
// 是否预定义现代浏览器暴露出来的全局变量(不包括alert和console)
"browser": true,
// 是否预定义console,alert这种开发阶段的调试代码
"devel": true,
// 该选项定义了一些非标准但广泛使用的全局变量,像"escape"和"unescape".
"nonstandard": true,
// ==============Enforcing Options============
// 禁止使用位运算符
"bitwise": true,
// 只允许使用camelCase or UPPER_CASE
"camelcase": false,
// 必须给block加括号
"curly": false,
// 不安全的== (会建议换成===或者!==)
"eqeqeq": false,
// 不安全的for in
"forin": false,
// 立即函数调用必须用(function(){}())而不是(function(){})()
"immed": true,
// 必须先定义再使用
"latedef": false,
// 构造函数名的首字母必须大写
"newcap": true,
// 禁止arguments.caller和arguments.callee的使用(ES5的严格模式中被禁用了,并且不是所有js实现中都有)
"noarg": true,
// 禁止空的代码块或未赋值的构造器
"noempty": false,
// 不允许不做赋值的构造函数
"nonew": true,
// 不允许使用++或者--的操作符
"plusplus": false,
// 正则中不允许使用.或者[^…]
"regexp": false,
// 未定义的XXX
"undef": true,
// 未使用的XXX
"unused": false,
// 需要使用strict mode,详见http:// ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
"strict": false,
// 行末有多余的空格
"trailing": false,
// 配置单双引号规则: "false"或者不设置 不做限制 "single" 只许单引号 "double" 只许双引号 "true" 两者选其一,但不能同时出现
"quotmark": "false",
// 配置缩进规则: 设置缩进对应的空格数,如不设置,则不对缩进做要求
// 注: 这里配置了indent,则即使上面的white设置了false,也还是会导致 swindent 报warning(https:// github.com/jshint/jshint/issues/935)
// TODO:确认jshint解决了 swindent 的支持后可重新配置此项
// "indent": 4,
// 配置单行代码的最大长度
// "maxlen": 120,
// 配置函数的最多参数个数: 参数过多时,可读性下降,可考虑用options对象字段来减少参数个数
// "maxparams": 5,
// 配置函数内代码块嵌套最多层数
// "maxdepth": 5,
// 配置函数内最多有多少条语句(一个函数声明会被当作一条语句)
// "maxstatements": 50,
// 配置最大圈复杂度(http://en.wikipedia.org/wiki/Cyclomatic_complexity)
// "maxcomplexity": 10, // TODO:打开来优化代码复杂度
// ==============Relaxing Options============
// 代码末尾缺失分号,是否放过
"asi": false,
// for等预期是==的地方用了=,是否放过
"boss": false,
// 代码中有debugger语句,是否放过
"debug": false,
// 使用"=="来比较变量与null,是否放过
"eqnull": false,
// ES5语法校验报警,是否放过
"es5": false,
// ECMAScript 6语法校验报警,是否放过
"esnext": true,
// 代码中使用了eval,是否放过
"evil": true,
// 只允许在函数调用或赋值时使用表达式(原因???) 2 > 1 ? (alert(1)) : (alert(2));
"expr": true,
// 在控制语句中定义了变量,却在控制语句之外使用变量 function(){ if(1) {var x = 0;} x = x + 1;}
"funcscope": false,
// 使用了全局级别的严格模式,是否放过
"globalstrict": false,
// 使用了__iterator__这个属性(并非所有浏览器支持), 是否放过 (原因???)
"iterator": false,
// 是否允许单行语句块中最后一条语句不写分号
"lastsemic": false,
// 是否允许出现不安全的换行(示例???)
"laxbreak": true,
// 是否允许逗号出现在行首的换行方式
"laxcomma": false,
// 是否允许在循环里定义函数
"loopfunc": true,
// 是否允许多行字符串(原因???)
"multistr": true,
// 是否允许在代码中使用__proto__属性(并非所有浏览器支持)
"proto": false,
// 是否允许在switch语句中只出现一个case
"onecase": true,
// 是否允许unescaped - in the end of regular expressions.
"regexdash": false,
// 是否允许在代码中使用"javascript:..."这样的url
"scripturl": true,
// 是否使用smarttab风格混用tab和space(http:// www.emacswiki.org/emacs/SmartTabs)
"smarttabs": false,
// 是否允许使用shadow变量(shadow变量:当一个变量所在的作用域之外还有一个同名的变量,称为shadow变量)
// http:// stackoverflow.com/questions/5373278/variable-shadowing-in-javascript
"shadow": false,
// 是否允许用obj['name']和obj.name两种方式访问对象的属性
"sub": true,
// 是否允许使用像"new function() {...}"这样怪异的构造器
"supernew": true,
// 是否允许在严格模式下的非构造函数中使用this(该选项只能用于函数作用域中)
"validthis": false,
// Missing radix parameter to parseInt (defaults to 10)
"-W065": false,
// Literal accessor is better written in dot notation
"-W069": false
}