一、在线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

输出输出结果将显示每个函数或方法的圈复杂度,AB表示复杂度等级,数值表示圈复杂度。数值越高,复杂度越高。

# 安装
pip install radon

# 运行
python -m radon cc ./cyclopy/cc.py -s

在这里插入图片描述


参考链接:

圈复杂度和代码质量优化(附带示例代码纠正代码质量)

python圈复杂度计算工具 圈复杂度怎么计算

代码圈复杂度计算——Lizard库

如何计算python文件圈复杂度

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐