运行一个脚本,看看你的项目的代码质量吧

2017-09-20 18:18:45 +08:00
 xcatliu

代码质量有很多指标:

  1. 源代码行数
  2. 代码重复率
  3. 圈复杂度
  4. 报错量( Bug 数)占比
  5. 测试覆盖率
  6. 开发约束(代码块行数等)

我做了一个脚本可以测出上面的 1, 2, 3

大家都来试一试吧!

Installation

npm install -g cqc

Usage

cqc [options] <pattern ...>

Examples:

cqc src/**/*.js

Output:

Number of files:            8
Souce lines of code:        357
Duplicate rate:             5.62%
Max complexity:             15
Complexity > 5  (count):    3
Complexity > 10 (count):    1
Complexity > 20 (count):    0

Multiple patterns

cqc src/**/*.js src/**/*.jsx

--ignore-pattern

cqc src/**/*.js --ignore-pattern src/vendor/**/*.js
cqc src/**/*.js --ignore-pattern src/vendor/**/*.js,src/third-party/**/*.js

--ignore-file

cqc src/**/*.js --ignore-file .gitignore
cqc src/**/*.js --ignore-file .gitignore,.eslintignore

--format

cqc src/**/*.js --format json

Output:

{
    "numberOfFiles": 8,
    "sloc": {
        "source": 357
    },
    "jscpd": {
        "percentage": "5.62"
    },
    "complexity": {
        "max": 15,
        "gt5Count": 3,
        "gt10Count": 1,
        "gt20Count": 0
    }
}
15478 次点击
所在节点    程序员
86 条回复
orange666
2017-09-21 13:48:32 +08:00
@xcatliu 酱紫啊 谢谢啊
rashawn
2017-09-21 14:05:31 +08:00
Number of files: 286
Source lines of code: 72966
Duplicate rate: 2.91%
Max complexity: 158
Complexity > 5 (count): 146
Complexity > 10 (count): 85
Complexity > 20 (count): 31
hanzichi
2017-09-21 15:48:06 +08:00
cat 胸去 alloyteam 啦?
xcatliu
2017-09-21 18:18:34 +08:00
xcatliu
2017-09-21 18:19:37 +08:00
@NCE 大概是每秒一万行代码吧
page470075640
2017-09-21 22:51:04 +08:00
Number of files: 1
Source lines of code: 192
Duplicate rate: 0.00%
Max complexity: 19
Complexity > 5 (count): 1
Complexity > 10 (count): 1
Complexity > 20 (count): 0

谢咯 感觉这个 Complexity 是时间复杂度对吧
xcatliu
2017-09-22 00:17:23 +08:00
@page470075640 这里的复杂度不是时间复杂度,是圈复杂度,也叫循环复杂度( Cyclomatic complexity ),就是程序的流程图里面的圈的数量。它决定了程序的可读性和可维护性。

少于 10 易于维护
多于 10 少于 20 难维护
超过 20 就不可维护了
xcatliu
2017-09-22 00:18:23 +08:00
@jedihy 感谢,以前只知道 sonar,已收藏。
jisi724
2017-09-22 02:34:52 +08:00
Number of files: 58
Source lines of code: 1471
Duplicate rate: 1.04%
High complexity rate: 1.72%
Max complexity: 14
xcatliu
2017-09-22 07:26:02 +08:00
@jisi724 赞,很健康
k9982874
2017-09-22 08:55:53 +08:00
```
Number of files: 13
Source lines of code: 1083
Duplicate rate: 5.24%
High complexity rate: 7.69%
Max complexity: 19
```
zoffy
2017-09-22 09:18:54 +08:00
比较好奇重复率的算法怎么写的
fds
2017-09-22 10:30:36 +08:00
@iugo 游戏服务器还有 python 什么的呢。很多游戏计算量不大,就是读读数据库,用什么语言都差不多~
fds
2017-09-22 10:32:47 +08:00
@NCE 你这分析结果估计是遇上了不支持的语言,不然复杂度不能这么低……
qichunren
2017-09-22 10:37:52 +08:00
你的这个工具要是再支持一些其它的如 c,c++,ruby,python 之类的就好了。
ThomasChan
2017-09-22 11:08:38 +08:00
Number of files: 280
Source lines of code: 57742
Duplicate rate: 7.52%
High complexity rate: 26.43%
Max complexity: 65


complexity 超过 20 难以维护?。。。。😂😂😂
pengfei
2017-09-22 11:17:52 +08:00
/i/h3P3KZWh.png
代码有点少
pengfei
2017-09-22 11:18:02 +08:00
sobigfish
2017-09-22 14:00:22 +08:00
CQC 第一反应是 close quarters combat -。-

其实我是来提醒作者 https://choosealicense.com/
xcatliu
2017-09-22 14:38:04 +08:00
@sobigfish 感谢提醒,这个项目依赖了 sloc, jscpd, eslint 等,他们都是 MIT 协议。
我从开源社区的收获远比我的贡献多,所以我的所有项目几乎都是 MIT 协议,希望能够给开源社区贡献一点力量!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/392337

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX