JSCS 已过期,推荐使用 eslintjavascript
JSHint 能够帮助检测你的 JavaScript 代码中的错误和潜在的问题,而 JSCS 是一个 JavaScript 的代码风格检查工具,经过使用这两款 QA Tools 能在团队协做中大大提高代码的正确性、准确性、完整性、简洁性、统一性及易读性,下面介绍 JSCS 的基本使用。html
JSCS 提供了150余项验证规则,其中预置了当下比较流行的编码风格指南如 jQuery、Airbnb、Google 等,你也能够针对项目对其进行任意配置,在使用以前先在你的环境中安装 JSCS :java
Atom plugin: https://atom.io/packages/linter-jscsnode
Brackets Extension: https://github.com/globexdesigns/brackets-jscsjquery
Grunt task: https://github.com/jscs-dev/grunt-jscs/git
Gulp task: https://github.com/jscs-dev/gulp-jscs/github
Overcommit Git pre-commit hook manager: https://github.com/brigade/overcommit/web
SublimeText 3 Plugin: https://github.com/SublimeLinter/SublimeLinter-jscs/gulp
Syntastic VIM Plugin: https://github.com/scrooloose/syntastic/blob/master/syntax_checkers/javascript/jscs.vim/vim
Web Essentials for Visual Studio 2013: https://github.com/madskristensen/WebEssentials2013/
IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm plugin: https://www.jetbrains.com/webstorm/help/jscs.html
安装好 JSCS 后须要对其进行些设置,最简单的方法是使用下面概述的预置选项:
Airbnb — https://github.com/airbnb/javascript
Crockford — http://javascript.crockford.com/code.html
Google — https://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml
MDCS — https://github.com/mrdoob/three.js/wiki/Mr.doob's-Code-Style™
node-style-guide - https://github.com/felixge/node-style-guide
Wikimedia — https://www.mediawiki.org/wiki/Manual:Coding_conventions/JavaScript
WordPress — https://make.wordpress.org/core/handbook/coding-standards/javascript/
Yandex — https://github.com/yandex/codestyle/blob/master/javascript.md
在项目根目录建立一个 .jscsrc
配置文件来改变或禁用任何预设规则,例如:
{ // 使用 jquery 编码风格规范 "preset": "jquery", // 改变 requireCurlyBraces 规则 "requireCurlyBraces": null // or false }
Tips:部分编辑器需重启才能使 .jscsrc
的更改生效。
JSCS 提供了一些选项,你能够根据须要对其进行设置:
additionalRules (附加规则)
// 加载附加的规则路径 "additionalRules": ["project-rules/*.js"]
preset (用预置规则进行规则预设)
你能够选择一个默认的预置:"airbnb", "crockford", "google", "jquery", "mdcs", "node-style-guide", "wikimedia", "wordpress", "yandex". 你也能够从本地路径或节点模块加载 "preset": "jquery" "preset": "./path-to-your-preset" // If your preset called "jscs-your-preset-node_modules-path" // You can either define full name or omit "jscs-" prefix - "preset": "your-preset-node_modules-path" 你能够对任何预设的规则设置为 null 或 false 来进行禁用: { "preset": "jquery", "requireCurlyBraces": null // or false }
excludeFiles (对指定文件或目录禁用风格检查)
// 采用 glob 模式匹配,使用 `"!foo"` 来排除具体文件/文件夹 "excludeFiles": ["folder_to_exclude/**", "src/!(bar|foo)"] 默认排除 `node_modules` 文件夹
fileExtensions (验证文件后缀名)
// 验证以 '.js' 和 '.jsx' 为后缀的文件,若是设置为 '*' 将验证任意文件类型 "fileExtensions": [".js", ".jsx"] 默认验证 `.js` 文件
maxErrors (设置错误要报告的最大数目)
"maxErrors": 10 默认:`50`
esnext (实验性,尝试使用 babler-jscs 解析 ES6+、JSX 及 Flow)
"esnext": true
es3 (使用 ES3 保留字)
"es3": true
verbose (为有错误的信息添加规则名称)
"verbose": true 默认:`false`
errorFilter (肯定是否报告错误的筛选器函数)
"errorFilter": "path/to/my/filter.js" 默认:`false` 请参阅 [如何定义一个错误过滤器。](https://github.com/jscs-dev/node-jscs/wiki/Error-Filters)
某些时候,你可能没法忍受 JSCS 严谨的验证规则,下面来看下如何压制这些错误提示:
你能够在 .jscsrc
配置文件中改变或禁用任何规则,例如:
{ // 使用 jquery 编码风格规范 "preset": "jquery", // 改变 requireCurlyBraces 规则 "requireCurlyBraces": null }
JSCS 支持两种注释方式来禁用或从新启用规则,在文件顶部放置 JSCS 注释能够禁用整个文件的规则检查:
/* jscs: disable */ /* jscs: enable */ // jscs: disable // jscs: enable
你还能够用它们来以多种方式禁用规则:
禁用全部规则
var a = b;
// jscs:disable
var c = d; // 在这行及以后的全部错误都将被忽略
// jscs:enable
var e = f; // 在这行及以后的全部错误都将被报告
禁用特定的规则
// jscs:disable requireCurlyBraces
if (x) y(); // 在这行及以后的全部 requireCurlyBraces 错误都将被忽略
// jscs:enable requireCurlyBraces
if (z) a(); // 在这行及以后的全部错误包括 requireCurlyBraces 错误都将被报告
禁用特定的规则对于单行
对单行进行特定规则忽略:
if (x) y(); // jscs:ignore requireCurlyBraces if (z) a();
禁用一个特定规则后,你能够启用全部规则,该规则将从新启用。
// jscs:disable requireCurlyBraces if (x) y(); // 在这行及以后的全部 requireCurlyBraces 错误都将被忽略 // jscs:enable if (z) a(); // 在这行及以后的全部错误包括 requireCurlyBraces 错误都将被报告
你能够同时禁用多个规则,并逐步从新启用它们:
// jscs:disable requireCurlyBraces, requireDotNotation if (x['a']) y(); // 在这行及以后的全部 requireCurlyBraces 或 requireDotNotation 错误都将被忽略 // jscs:enable requireCurlyBraces if (z['a']) a(); // 在这行及以后的全部错误包括 requireDotNotation 错误都将被报告,但 requireCurlyBraces 错误将被忽略 // jscs:enable requireDotNotation if (z['a']) a(); // 在这行及以后的全部错误都将被报告