Radon 是一个专门用于分析 Python 源代码质量的工具库,它可以计算多种代码度量指标,帮助开发者评估代码的复杂度、可维护性等,从而优化代码结构、提高可读性和稳定性。其主要度量指标如下:
| 度量指标 | 中文名称 | 核心功能与解释 | 输出结果/范围 | 常见用途 |
|---|---|---|---|---|
| Cyclomatic Complexity | 圈复杂度 | 衡量代码中独立路径的数量,用于评估逻辑复杂度。值越高通常表示代码越难理解和测试。 | 一个具体的数值(如 1, 2, 3…),并可按等级 A-F 划分。 | 识别高复杂度的函数或类,优先进行重构或编写更全面的测试用例。 |
| Maintainability Index | 可维护性指数 | 综合代码行数、圈复杂度、Halstead 体积等计算得出,用于量化代码的可维护性。 | 0-100 分,并可按等级 A-C 划分。 | 快速评估代码模块的长期维护成本,指导代码审查和重构决策。 |
| Raw Metrics | 原始指标 | 统计代码的基础物理和逻辑结构信息。 | 一组具体的数值,包括: - LOC(代码总行数) - LLOC(逻辑代码行数) - SLOC(源代码行数) - 注释行数 - 空行数等 | 用于项目规模估算、代码注释率分析、基础代码结构统计。 |
| Halstead Metrics | Halstead 度量 | 通过代码中运算符和操作数的数量,计算出程序的体积、难度、工作量、预估缺陷数等指标。 | 一组计算得出的数值,包括: - Volume(体积) - Difficulty(难度) - Effort(工作量) - Bugs(预估缺陷数)等 | 从更深层次分析代码的内在复杂性和实现成本,常用于学术研究或高级质量分析。 |
一、安装
直接使用pip安装即可:
pip install radon也可在uv中安装radon命令如下:
# 将 Radon 添加到当前项目的依赖中,并完成安装 uv add radon # 安装到全局环境 uv tool install radon二、使用指南
假设你的项目目录是 my_project,某个代码文件是your_code.py。通过命令行直接使用是最常用的一种方式。
输出格式选项
-s:简洁输出(只显示高复杂度项)-j:JSON 格式输出-a:显示平均复杂度-n C:只显示复杂度 ≥ C 的函数(例如-n 10)
(1)圈复杂度分析
randon cc my_project randon cc your_code.py【注】如果路径有特殊字符,可以用引号包裹。
radon cc "my project"cc的输出示例:
your_code.py F 5:0 foo - A (2) # 函数 foo,复杂度 2,评级 A(很好) F 10:0 bar - C (12) # 函数 bar,复杂度 12,评级 C(偏高)(2)原始指标
radon raw my_project radon raw your_code.pyraw的输出示例:
my_project/ LOC: 200 # 总行数(Lines of Code) LLOC: 120 # 逻辑行(Logical Lines of Code) SLOC: 180 # 源码行(Source Lines of Code,排除空行) Comments: 40 # 注释行数(包括 # 和 docstring) Multi: 10 # 多行字符串(常用于 docstring) Blank: 20 # 空行 - Comment Stats - (C % L): 20.00% # 注释行 / 总行数(LOC) (C % S): 22.22% # 注释行 / 源码行(SLOC) (C + M % L): 25.00% # 注释+多行字符串 / 总行数(更接近“文档覆盖率”)(3)Halstead 指标
radon hal my_project radon hal your_code.py(4)维护性指数
radon mi my_project radon mi your_code.py