Skip to content
GU Yiling edited this page Nov 25, 2016 · 10 revisions

ESLint

FECSJavaScript 检查是基于 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

默认规则

  1. http://eslint.org/docs/rules/
  2. https://github.com/ecomfe/fecs/blob/master/lib/js/eslint.yml

由于部分规则 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 */

更多配置方式

http://eslint.org/docs/user-guide/configuring