支持语言
默认递归分析文件夹
支持下列的一些语言等
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