Eslint参考手册
规则 | Rules
complexity
循环复杂度测量程序源代码中线性独立路径的数量。该规则允许设置圈复杂度阈值。
function a(x) {
if (true) {
return x; // 1st path
} else if (false) {
return x+1; // 2nd path
} else {
return 4; // 3rd path
}
}
规则细节
规则旨在通过限制程序中允许的圈复杂度来降低代码复杂性。因此,它会在圈复杂度超过配置的阈值(默认值20
)时发出警告。
不正确代码的示例最多为2:
/*eslint complexity: ["error", 2]*/
function a(x) {
if (true) {
return x;
} else if (false) {
return x+1;
} else {
return 4; // 3rd path
}
}
正确代码的例子最多为2:
/*eslint complexity: ["error", 2]*/
function a(x) {
if (true) {
return x;
} else {
return 4;
}
}
选项
或者,您可以指定一个max
对象属性:
"complexity": ["error", 2]
相当于
"complexity": ["error", { "max": 2 }]
不推荐使用maximum
:对象属性已弃用。请改用该属性max
。
何时不使用它
如果您无法确定适合您代码的复杂性限制,则最好禁用此规则。
进一步阅读
- Cyclomatic Complexity
- Complexity Analysis of JavaScript Code
- More about Complexity in JavaScript
- About Complexity
- Discussion about Complexity in ESLint and more links
相关规则
- max-depth
- max-len
- max-nested-callbacks
- max-params
- max-statements
版本
规则在ESLint 0.0.9中引入。
资源
- Rule source
- Documentation source
规则 | Rules相关
ESLint 是一个代码规范和错误检查工具,有以下几个特性。所有东西都是可以插拔的。你可以调用任意的 rule api 或者 formatter api 去打包或者定义 rule or formatter。任意的 rule 都是独立的。没有特定的 coding style,你可以自己配置。
主页 | https://eslint.org/ |
源码 | https://github.com/eslint/eslint |
发布版本 | 4.12.0 |