(19)python复杂度计算:在线AI(时间复杂)和本地工具(圈复杂度)
一、在线AI——TimeComplexity
官网:TimeComplexity.ai
简单易用的一个网站,输入代码片段后,AI会自动进行分析
二、本地工具
本地工具将介绍Github项目cyclopy,以及python本地库,后续如果应用到,还会介绍更多的工具
1、圈复杂度
圈复杂度(Cyclomatic Complexity)(维基百科)是一种代码复杂度的衡量标准。它可以用来衡量个模块判定结构的复杂程度,数量上表现为独立线性路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。它根据程序从开始到结束的线性独立路径的数量计算得来。
2、Github项目:cyclopy
(1)安装和配置
Github项目:https://github.com/Split174/cyclopy
下载后解压到自己的路径,进入项目目录,修改 ..\cyclopy-master\cyclopy\cc.py
,在py文件的末尾添加主函数入口
if __name__ == "__main__":main()
(2)运行
终端在 cyclopy-master
目录下,运行命令
python -m cyclopy -f "path/example.py"
其中 path/example.py
代表需要测试圈复杂度的命令,以"./cyclopy/cc.py"中的cc.py为例
python cyclopy/cc.py -f "./cyclopy/cc.py"
2、lizard / McCabe / radon
本小节中的应用全是相似的,只要安装+运行即可,按照以下命令
(1)lizard
输出的是详细报告
# 安装
pip install lizard# 普通使用
python -m lizard ./cyclopy/cc.py# 限制圈复杂度,输出中会有一个只保留cyclomatic_complexity > 5的表格
python -m lizard --CCN 5 ./cyclopy/cc.py
(2)McCabe
和cyclopy一样,输出圈复杂度
# 安装
pip install mccabe# 运行,其中 --min 5 是指最小允许的圈复杂度,高于5的圈复杂度则输出出来
python -m mccabe --min 5 ./cyclopy/cc.py
(3)radon
输出输出结果将显示每个函数或方法的圈复杂度,A
和B
表示复杂度等级,数值表示圈复杂度。数值越高,复杂度越高。
# 安装
pip install radon# 运行
python -m radon cc ./cyclopy/cc.py -s
参考链接:
圈复杂度和代码质量优化(附带示例代码纠正代码质量)
python圈复杂度计算工具 圈复杂度怎么计算
代码圈复杂度计算——Lizard库
如何计算python文件圈复杂度