-
Notifications
You must be signed in to change notification settings - Fork 171
Lint
EDP 通过 fecs 整合了一系列静态检测
工具,能够对前端的 JavaScript
、HTML
、CSS
代码进行检测。
注意:静态检测
是衡量代码是否高质量的第一道门槛,只能检查出一些显而易见的、工程性欠妥的代码,不代表代码的逻辑是正确的,也无法检查代码结构和模块划分的合理性。
可以直接使用 edp lint
来检测当前目录下的所有 js
、css
、less
和 html
,也可以通过 --type
参数指定文件类型。
EDP 内部直接使用 fecs
调用 eslint
,通过 jshint
命令:edp jshint
或 edp lint --type=js
,能够对当前目录
下所有 js
文件的代码进行检测。
$ edp jshint
edp INFO main.js
edp WARN → line 149, col 12: Strings must use singlequote.
edp WARN → line 529, col 9: Empty block.
edp WARN → line 1057, col 61: Expected a 'break' statement before 'case'.
edp INFO tpl.js
edp WARN → line 20, col 43: Expected '===' and instead saw '=='.
edp WARN → line 24, col 68: Expected '===' and instead saw '=='.
edp WARN → line 14, col 59: 'config' is defined but never used.
EDP 自定义了一套 eslint
的配置,如果想使用自己的检测配置,可以在当前目录
下建立.fecstrc
文件(或者使用 package.json 的 fecs 字段)。该文件是 JSON 格式,其中相关参数将与默认参数 mixin。具体参数的含义请参考ESLint Rules。
下面是一个.fecsrc
的简单例子:
{
"files": [
"src",
"test/**/*.spec.js"
],
"eslint": {
"env": {
"node": true
},
"rules": {
"no-console": 0,
"fecs-camelcase": [2, {"ignore": ["/-/"]}]
}
},
"csshint": {
},
"htmlcs": {
},
"lesslint": {
}
}
如果有的 js 文件比较特殊,可以在文件内容中,通过注释的形式,单独设置检查该文件时的一些特殊参数。
// 有的正则比较长,有的判断没必要,所以特别放开一些限制
/* eslint max-len:[2, 150, 4] */
// forin 规则有时会误报
/* eslint-disable guard-for-in */
for (var key in obj) {
if (!obj.hasOwnProperty(key)) {
continue;
}
// 用 Object.prototype.hasOwnProperty.call(obj, key); 也会误报
// statements
}
/* eslint-enable guard-for-in */
有时我们想要排除一些文件,不期望这些文件被检测:比如数据模拟、测试用例、工具代码。这时我们可以在当前目录
下建立.fecsignore
文件。
.fecsignore
中,每一行是一个 pattern。其逻辑与 gitignore
一致,详细说明请参看 man 5 gitignore
。
**/tool/**
**/doc/**
提示:bower_components
、node_module
目录已经被自动排除。
EDP 内置并封装了 csshint
工具,为了兼容,保留 csslint
命令:edp csslint
,对当前目录
下所有 css
文件的代码进行检测。
$ edp csslint
edp INFO page.css
edp WARN → line 4, col 10: Values of 0 shouldn't have units specified.
edp WARN → line 7, col 1: Rule is empty.
edp WARN → line 8, col 1: Rule is empty.
EDP 自定义了一套 csshint
的配置,如果想使用自己的检测配置,可以在当前目录
下建立.fecsrc
文件。该文件是一个 JSON 文件,其中相关参数将与默认参数 mixin。具体配置请参考 https://github.com/ecomfe/fecs/blob/master/lib/css/csshint.json。
下面是一个.fecsrc
的简单例子:
{
"files": [
"src",
"test/**/*.spec.js"
],
"eslint": {
},
"csshint": {
"block-indent": [" ", 0]
},
"htmlcs": {
},
"lesslint": {
}
}
有时我们想要排除一些文件,不期望这些文件被检测:比如测试页面用的 CSS。这时我们可以在当前目录
下建立.fecsignore
文件。
.fecsignore
中,每一行是一个 pattern。其逻辑与 gitignore
一致,详细说明请参看 man 5 gitignore
。
**/tool/**
**/doc/**
提示:bower_components
、node_module
目录已经被自动排除。
EDP 内置并封装了 lesslint
工具,通过 csslint
命令:edp csslint
,对当前目录
下所有 css
文件的代码进行检测。
$ edp lesslint
edp INFO page.less
edp WARN → line 4, col 10: Values of 0 shouldn't have units specified.
edp WARN → line 7, col 1: Rule is empty.
edp WARN → line 8, col 1: Rule is empty.
EDP 自定义了一套 lesslint
的配置,如果想使用自己的检测配置,可以在当前目录
下建立.fecsrc
文件。该文件是一个 JSON 文件,其中相关参数将与默认参数 mixin。具体配置请参考 https://github.com/ecomfe/fecs/blob/master/lib/less/lesslint.json。
下面是一个.fecsrc
的简单例子:
{
"files": [
"src",
"test/**/*.spec.js"
],
"eslint": {
},
"csshint": {
},
"htmlcs": {
},
"lesslint": {
"hex-color": false
}
}
有时我们想要排除一些文件,不期望这些文件被检测:比如测试页面用的 CSS。这时我们可以在当前目录
下建立.fecsignore
文件。
.fecsignore
中,每一行是一个 pattern。其逻辑与 gitignore
一致,详细说明请参看 man 5 gitignore
。
**/tool/**
**/doc/**
提示:bower_components
、node_module
目录已经被自动排除。
EDP内置并封装了 htmlcs
工具,为了向下兼容保留 htmlhint
命令:edp htmlhint
,对当前目录
下所有 html
文件的代码进行检测。
$ edp htmlhint
edp INFO index.html
edp WARN → line 7, col 3: INCORRECT_CLOSE_TAG_ORDER: head
edp WARN → line 25, col 27: UNUNIQUE_ID: try-nav
EDP 自定义了一套 htmlcs
的配置,如果想使用自己的检测配置,可以在当前目录
下建立.fecsrc
文件。该文件是一个 JSON 文件,其中相关参数将与默认参数 mixin。具体配置请参考 <
EDP 自定义了一套 csshint
的配置,如果想使用自己的检测配置,可以在当前目录
下建立.fecsrc
文件。该文件是一个 JSON 文件,其中相关参数将与默认参数 mixin。具体配置请参考 https://github.com/ecomfe/fecs/blob/master/lib/html/htmlcs.json。
下面是一个.fecsrc
的简单例子:
{
"files": [
"src",
"test/**/*.spec.js"
],
"eslint": {
},
"csshint": {
},
"htmlcs": {
"unique-id": false,
"max-len": 80
},
"lesslint": {
}
}
有时我们想要排除一些文件,不期望这些文件被检测:比如测试页面。这时我们可以在当前目录
下建立.fecsignore
文件。
.fecsignore
中,每一行是一个 pattern。其逻辑与 gitignore
一致,详细说明请参看 man 5 gitignore
。
**/tool/**
**/doc/**
提示:bower_components
、node_module
目录已经被自动排除。