运行mccabe代码复杂性检查器的pytest插件。

pytest-mccabe的Python项目详细描述


pytest mccabe

https://travis-ci.org/The-Compiler/pytest-mccabe.svg?branch=master< Py.Puthon插件用于检查Python源的循环复杂性 mccabe

使用量

安装方式:

pip install pytest-mccabe

如果您随后键入:

py.test --mccabe

.py结尾的每个文件都将被发现并在mccabe中运行, 从命令行参数开始。

简单用法示例

假设您有这个(故意错误和复杂的)代码:

# module.py

import random
import os.path

def some_function():
    num = random.random()
    if 0 <= num < 0.1:
        print("1")
    elif 0.1 <= num < 0.2:
        print("2")
    elif 0.2 <= num < 0.3:
        print("3")
    elif 0.3 <= num < 0.4:
        print("4")
    elif 0.4 <= num < 0.5:
        print("5")
    elif 0.5 <= num < 0.6:
        print("6")
    elif 0.6 <= num < 0.7:
        print("7")
    elif 0.7 <= num < 0.8:
        print("8")
    elif 0.8 <= num < 0.9:
        print("9")
    elif 0.9 <= num < 1:
        print("10")

在安装了py test mccabe的情况下运行py.test将显示此函数是 被认为过于复杂:

$ py.test -q --mccabe module.py
F
============================== FAILURES ==============================
____________________________ mccabe-check ____________________________
.../module.py:4: C901 'some_function' is too complex (11)

配置每个项目的McCabe复杂性和文件<>你可以为你的项目配置最大的复杂性 通过将mccabe-complexity条目添加到pytest配置文件(例如 setup.cfg)像这样:

[pytest]
mccabe-complexity=15

使用上面的示例重新运行会更好:

$ py.test -q --mccabe foo.py
.
1 passed in 0.00 seconds

如果您有一些文件要设置比 项目范围1,您可以启动一个具有复杂模式的复杂行:

[pytest]
mccabe-complexity =
    *.py 7
    magic.py 10

忽略某些函数

可以通过添加注释来排除某些函数的复杂性检查 像这样:

def some_function():  # noqa
    ...

def another_function():  # pragma: no mccabe
    ...

(两者都能工作-# noqa主要用于flake8兼容性)

运行McCabe检查,无其他测试

您可以将测试运行限制为仅执行“mccabe”测试 而不是通过键入:

py.test --mccabe -m mccabe

这将只运行标有“mccabe”关键字的测试 这是为这个插件添加的mccabe测试项添加的。

如果使用的是pytest<;2.4,则使用以下调用 效果相同:

py.test --mccabe -k mccabe

注释

此插件的存储库位于https://github.com/The-Compiler/pytest-mccabe

有关py.test的更多信息,请参见http://pytest.org

代码基于Florian Schulze的优秀pytest-flakes-谢谢!

更改

0.1

  • 初次发布。

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

推荐PyPI第三方库


热门话题
当我使用vert时使用java。要创建路由,地址已在使用中   java十六进制字符串到int的转换工作不正常   从Select语句生成的java JPA Hibernate ID值   javajavax。面孔。FacesException:未上载任何文件   java Android从getIntent()获取应用程序组件   java神经网络用于查找特定类型的网站?   java如何在将文件流写入outputStream时激活XSS?   java无法在tomcat服务器中部署Spring应用程序   聊天java Web服务器,http部分响应   java使用ObjectOutputStream在单个ZipOutputStream中写入多个ZipPentry   java如何使用空布局管理器在JPanel上添加滚动条?   java Cucumber功能文件未绑定到粘合路径   mysql Java从值数组中选择   java setOnItemClickListener()不处理片段的listView   java maven和eclipse构建冲突   java OkHttp:无法通过POST方法向服务器发送数据   java无法在recycler视图中为不同的视图持有者实现稳定的ID   java只有一个类可以实例化所有其他类