Skip to content
chris edited this page Sep 22, 2015 · 6 revisions

EDP 通过 fecs 整合了一系列静态检测工具,能够对前端的 JavaScriptHTMLCSS 代码进行检测。

注意:静态检测是衡量代码是否高质量的第一道门槛,只能检查出一些显而易见的、工程性欠妥的代码,不代表代码的逻辑是正确的,也无法检查代码结构和模块划分的合理性。

可以直接使用 edp lint 来检测当前目录下的所有 jscsslesshtml,也可以通过 --type 参数指定文件类型。

JavaScript 代码检测

EDP 内部直接使用 fecs 调用 eslint,通过 jshint 命令:edp jshintedp 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_componentsnode_module 目录已经被自动排除。

CSS 代码检测

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_componentsnode_module 目录已经被自动排除。

LESS 代码检测

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_componentsnode_module 目录已经被自动排除。

HTML代码检测

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_componentsnode_module 目录已经被自动排除。