背景
在项目开发中,我们经常见到复杂度很高的代码,由于历史原因,代码一直没有重构,导致后面越来越难以维护和迭代,所以在项目开发期间,控制代码复杂度是非常重要的。
github: https://github.com/hellosean1025/code-metrics-loader
衡量标准
代码复杂度就是统计一个函数有多少个分支(if,while,for等)每增加一个分支,复杂度加1。
简单来说,就是相当于需要多少个测试用例才能对这个函数做到全路径覆盖。
计算方法:
(1)由1计算,一直往下通过程序。
(2)一旦遇到以下关键字或同类的词,如if ,while,for 加1。
(3)switch-case语句的每一种情况加1。
如何降低代码复杂度
为了降低代码复杂度,本人开发了 code-metrics-loader,这个 webpack-loader 能够在代码编译时,以函数为维度统计代码复杂度,如果超过设定的限制,将会报错提醒用户重构代码。
如何集成到项目
在项目执行:
npm i -D code-metrics-loader
在 webpack.config.js 添加 code-metrics-loader:
{
module: {
rules: [{
enforce: 'pre',
test: /\.js$/,
exclude: /node_modules/,
use: [{
loader: 'code-metrics-loader',
options:{
errorLimit: 20
}
}],
}]
}
}
实际效果
github: https://github.com/hellosean1025/code-metrics-loader
eslint有个配置可以限制复杂度,超过就报错
来自酷炫的 CNodeMD
@lzy2014love 怎么弄
来自酷炫的 CNodeMD
@robberfree 非常感谢
来自酷炫的 CNodeMD