跳转到主要内容

Python的代码度量

项目描述

Codacy badge Travis-CI badge Coveralls badge PyPI latest version badge Radon license

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 代表类)。

实际上,它还有颜色!

A screen of Radon's cc command

关于文件编码的说明

在某些系统上,例如 Windows,默认编码不是 UTF-8。如果您在 Python 文件中使用 Unicode 字符并希望使用 Radon 分析,您需要将 RADONFILESENCODING 环境变量设置为 UTF-8

在持续集成服务器上

如果您想在 CI 服务器上使用 radon,您可能更适合使用 xenon。虽然它仍然是实验性的,但一旦超过各种阈值,它将失败(这意味着退出时带有非零退出代码)。radon 更像是一个报告工具,而 xenon 则是一个监控工具。

如果您在寻找更完整的解决方案,请阅读以下部分。

Codacy

Codacy 默认使用 Radon 来计算源代码的指标

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%

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

radon-6.0.1.tar.gz (1.9 MB 查看哈希值)

上传时间

构建分发

radon-6.0.1-py2.py3-none-any.whl (52.8 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面