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

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.