Lizard统计代码圈复杂度和代码注释率

支持语言

默认递归分析文件夹
支持下列的一些语言等
C/C++ (works with C++14)
Java
C# (C Sharp)
JavaScript
Objective C
Swift
Python
Ruby
TTCN-3
PHP
Scala
GDScript

圈复杂度

圈复杂度是 Thomas J. McCabe 在 1976年开创的软件指标,用来判断程序的复杂度。
这个指标度量源代码中线性独立的路径或分支的数量。
根据 McCabe 所说,一个方法的复杂度最好保持在10 以下。
这是因为对人类记忆力的研究表明,人的短期记忆只能存储 7 件事(偏差为正负 2)。

如果开发人员编写的代码有 50 个线性独立的路径,那么为了在头脑中描绘出方法中发生的情况,需要的记忆力大约超过短期记忆容量的5倍。
简单的方法不会超过人的短期记忆力的极限,因此更容易应付,事实证明它们的错误更少。
Enerjy 在 2008年所做的研究表明,在圈复杂度与错误数量之间有很强的相关性。
复杂度为 11 的类的出错概率为 0.28,而复杂度为 74的类的出错概率会上升到 0.98。

使用

Git源码链接 https://github.com/terryyin/lizard

pip: pip install lizard

绿色版本:

实际执行常用命令

cd /.../...你的代码目录

cd /.../...你的代码目录
(1)lizard 默认递归检测文件下的所有文件
(2)lizard -o check.txt 将所有文件输出到某个文件
(3)lizard -C 15 检测CCN超过15
(4)lizard -C 15 .\yingjiafupan\run_fupan.py 检测某个文件CCN超过15

实际操作:

这里以android代码为例

cd到项目的java目录执行-o check.txt

adb shell
cd Test\app\src\main\java\com\lx\test python C:\Users\ccn\lizard.py -o check.txt

执行命令后会在Test\app\src\main\java\com\lx\test目录下生成check.text文件

结果展示解释

NLOC,    the nloc (lines of code without comments), 不包含注释的代码行数
CCN,     cyclomatic complexity number, 圈复杂度也就是分支复杂度,最好保持在10 以下
token,   token count of functions. token的个数(关键字,标示符,常量,标点符号,操作符)
param,   parameter count of functions. 参数统计数就是函数的参数个数
Cnt,  Count的缩写
Rt,  Rate的缩写

Comment Rt 代码注释率,一般企业要求代码注释率要达到0.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值