python中的代码度量

radon的Python项目详细描述


Codacy badgeTravis-CI badgeCoveralls badgePyPI latest version badgeDownload formatRadon license

radon是一个python工具,它从源代码计算各种度量。 氡可以计算:

    ,即圈复杂度
  • raw度量(包括sloc、注释行、空行和c.)
  • halstead指标(所有指标)
  • 可维护性索引(在visual studio中使用的索引)

要求

radon将从python 2.7运行到python 3.7(python版本除外 从3.0到3.3),只有一个代码库,不需要像 2to3或6。它也可以在pypy上运行,没有任何问题(目前是pypy 5.8.0用于试验)。

氡依赖于尽可能少的包裹。目前只有 严格要求(用于cli界面)。colorama也列为 但是如果radon不能导入它,输出就不会 有色的。

注释python 2.6在版本1.5.0之前一直受支持。从2.0版开始,它 不再支持。

安装

使用pip:

$ pip install radon

或者下载源并运行安装文件:

$ python setup.py install

用法

radon可以从命令行使用,也可以通过编程使用。 文档位于https://radon.readthedocs.org/

< H2>圈复杂度示例

快速示例:

$ 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)

说明:

    {Tt1}$是计算圈复杂度的Radon命令 {TT2}$告诉Radon在最后计算平均复杂度。请注意 在显示的块中计算平均值。如果你想要总数 平均值,在所有块中,无论显示什么,都应该 使用--total-average {TT4}$告诉Radon只打印具有C或C复杂度等级的结果 更糟的是。其他示例:-na(从a到f)或-nd(从d到f)。
  • 行号前面的字母表示块的类型 (f表示函数,m方法和c类)。

其实更好的是:它有颜色!

A screen of Radon's cc command

关于文件编码的说明

在某些系统(如windows)上,默认编码不是utf-8。如果你是 在python文件中使用unicode字符并希望使用radon对其进行分析, 必须将radonfileencoding环境变量设置为utf-8

在持续集成服务器上

如果您希望在ci服务器上使用radon xenon。尽管仍处于实验阶段,但它将 失败(即意味着退出非零退出代码)时,各种阈值是 超越了。氡更像是一种报告工具,而氙则是一种监测工具。 一个。

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

密码

Codacy使用radonby default从源代码计算度量。

代码气候

氡可用作Code Climate Engine。 要了解如何将radon检查添加到代码climate平台,head 转到他们的文档: https://docs.codeclimate.com/v1.0/docs/radon

煤分析仪

氡也支持在coala。添加氡 检查coala,只需将RadonBear添加到 你的.coafile

共因子

CodeFactor使用Radon ^ {A15}计算圈复杂度。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用Java将JSON转换为哈希映射   java如何通过使用MapStruct从源对象复制值来填充目标对象内部的映射?   注入泛型类型为@InjectGuice的类时发生java错误   字符串如何在JavaIDE中导入基本符号   在Java中将JSON转换为List<List<String>>   java Java9 HttpClient SSLHandshakeException   java jOOQ代码生成器   java如何调整图标(图像按钮),使其不会放大?   java我可以在使用Eclipse时安装2个或更多Android SDK吗   sqlite Java实现DAO   如何解决此错误?“java.lang.NoSuchFieldError:org.apache.http.conn.ssl.SSLConnectionSocketFactory上的实例。<clinit>。”   java Maven:将基于OSP的zip文件解压缩到WEBINF/lib   java如何在每次调用函数时获取当前gps位置?