ESLint
ESLint
FECS
的 JavaScript
检查是基于 ESLint 结合我们的 JavaScript 编码规范,配置了一些默认的参数,以检查代码中可能存在的质量问题。
使用方式
最常用的方式就是直接调用fecs
,此时会递归的扫描当前目录下面的所有的 JavaScript、CSS 和 HTML 文件(默认已经忽略 node_modules, bower_components 目录),然后依次调用 ESLint
检查得到的 JavaScript 文件。
如果想要忽略某些文件或目录,可以使用 ignore
参数执行,例如:
$ fecs --ignore='**/cli/**'
同时也可以使用 .fecsignore
文件来配置类似 Git
方式的 .gitignore
忽略规则。
另外,需要同时检查多个目录时,可以这样:
$ fecs dir1 dir2
可以指定只检查 JavaScript
文件:
$ fecs dir1 --type=js
如果觉得默认显示的英文提示不易懂,或者需要看我们对应的规范定义,可以指定 reporter
参数为 baidu
:
$ fecs --reporter=baidu
默认规则
由于部分规则 ESLint
未实现(如缩进的 indent
和 单 var
定义多个变量的 disallow-multi-var
)或实现得太粗旷或有 Bug(如检查 JSDoc3
注释的 valid-jsdoc
)等,我们在 FECS
作了修改版,此类规则在配置文件中的表现是多了 fecs-
前缀。
如果想查看检查结果对应的规则名称,可以在执行时使用 rule
参数:
$ fecs --rule
如何针对检查结果作修复
ESLint
大部分给出的是关于代码风格或有安全隐患方面的问题,一般没有特殊情况的话,还是全部都修复掉。当然,规范并非不能打破,理由充分的话,可以自行配置忽略某部分代码的问题。
后续将会持续改进 jformatter,以便通过 fecs format
调用时自动修复大部分错误。
项目级别
可以在项目根目录创建 .eslintrc
.fecsrc
文件,配置项将会覆盖 FECS
的默认值。FECS
默认针对的是 Web 项目,对于 node 项目,需要更改的配置如下:
{
"eslint": {
"env": {
"node": true,
"browser": false
},
"rules": {
"no-console": 0
}
}
}
文件级别
如果只是某些文件需要 特殊照顾
,可以在文件头使用 /* eslint-disable ruleName */
来配置。
// 使用 node 环境,这样对于 require/process/exports 之类的使用不会报错
/* eslint-env node */
// 大多数 node 应用需要用到 console
/* eslint-disable no-console */
文件中代码
部分代码的解决方式与文件类似,但是在代码结束的地方需要再恢复规则。
// 很多算法实现会超过 50 statement,可以禁止此条规则
/* eslint-disable fecs-max-statements */
//
// 这里是不可分割的算法代码,但是超出默认的 50 statement
//
// 在算法之外再恢复该条规则
/* eslint-enable fecs-max-statements */