Python的代码度量
项目描述
Radon是一个Python工具,可以从源代码中计算各种指标。Radon可以计算
McCabe的复杂度,即圈复杂度
原始指标(这些包括SLOC、注释行、空行等)
Halstead指标(所有指标)
可维护性指数(Visual Studio中使用的指数)
需求
Radon可以在从Python 2.7到Python 3.8(除Python 3.0至3.3版本外)的Python版本上运行,使用单个代码库,无需使用2to3或six等工具。它也可以在PyPy上运行而没有任何问题(当前测试中使用的是PyPy 3.5 v7.3.1)。
Radon尽可能少地依赖于其他包。目前只严格需要mando(用于CLI界面)。colorama也被列为依赖项,但如果Radon无法导入它,输出将不会着色。
注意:Python 2.6支持直到版本1.5.0。从版本2.0开始不再支持。
安装
使用Pip
$ pip install radon
如果您想从 pyproject.toml 配置 Radon,并且您运行的 Python 版本小于 3.11,您将需要额外的 toml 依赖项。
$ pip install radon[toml]
或者下载源代码并运行安装文件。
$ python setup.py install
使用方法
Radon 可以通过命令行或程序化方式使用。文档可在 https://radon.readthedocs.org/ 查看。
循环复杂度示例
快速示例
$ radon cc sympy/solvers/solvers.py -a -nc
sympy/solvers/solvers.py
F 346:0 solve - F
F 1093:0 _solve - F
F 1434:0 _solve_system - F
F 2647:0 unrad - F
F 110:0 checksol - F
F 2238:0 _tsolve - F
F 2482:0 _invert - F
F 1862:0 solve_linear_system - E
F 1781:0 minsolve_linear_system - D
F 1636:0 solve_linear - D
F 2382:0 nsolve - C
11 blocks (classes, functions, methods) analyzed.
Average complexity: F (61.0)
解释
cc 是 radon 命令,用于计算循环复杂度。
-a 告诉 radon 在最后计算平均复杂度。注意,平均是在 显示的 块中计算的。如果您想计算所有块的总体平均复杂度,无论是否显示,应使用 --total-average。
-nc 告诉 radon 仅打印复杂度排名为 C 或更差的输出。其他示例:-na(从 A 到 F),或 -nd(从 D 到 F)。
行号前面的字母代表块的类型(F 代表函数,M 代表方法,C 代表类)。
实际上,它还有颜色!
关于文件编码的说明
在某些系统上,例如 Windows,默认编码不是 UTF-8。如果您在 Python 文件中使用 Unicode 字符并希望使用 Radon 分析,您需要将 RADONFILESENCODING 环境变量设置为 UTF-8。
在持续集成服务器上
如果您想在 CI 服务器上使用 radon,您可能更适合使用 xenon。虽然它仍然是实验性的,但一旦超过各种阈值,它将失败(这意味着退出时带有非零退出代码)。radon 更像是一个报告工具,而 xenon 则是一个监控工具。
如果您在寻找更完整的解决方案,请阅读以下部分。
Codacy
Code Climate
Radon 作为 Code Climate Engine 提供。要了解如何将 Radon 检查添加到您的 Code Climate 平台,请参阅他们的文档:https://docs.codeclimate.com/v1.0/docs/radon
coala 分析器
Radon 也支持 coala。要将 Radon 检查添加到 coala,只需将 RadonBear 添加到您的 .coafile 中的某个部分即可。
CodeFactor
CodeFactor 默认使用 Radon 来计算循环复杂度。
与 Jupyter 笔记本的使用
Radon 可以与 .ipynb 文件一起使用,以检查 Python 单元格的代码指标。任何 % 宏都将被忽略在指标中。
要启用 Jupyter 笔记本扫描,请添加 --include-ipynb 标志。
要启用单个单元的报告,请添加 --ipynb-cells 标志。
快速示例
$ radon raw --include-ipynb --ipynb-cells .
example.ipynb
LOC: 63
LLOC: 37
SLOC: 37
Comments: 3
Single comments: 2
Multi: 10
Blank: 14
- Comment Stats
(C % L): 5%
(C % S): 8%
(C + M % L): 21%
example.ipynb:[0]
LOC: 0
LLOC: 0
SLOC: 0
Comments: 0
Single comments: 0
Multi: 0
Blank: 0
- Comment Stats
(C % L): 0%
(C % S): 0%
(C + M % L): 0%
example.ipynb:[1]
LOC: 2
LLOC: 2
SLOC: 2
Comments: 0
Single comments: 0
Multi: 0
Blank: 0
- Comment Stats
(C % L): 0%
(C % S): 0%
(C + M % L): 0%
链接
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。