跳转到主要内容

pytest插件,用于运行mccabe代码复杂度检查器。

项目描述

pytest-mccabe

https://travis-ci.org/The-Compiler/pytest-mccabe.svg?branch=master

pytest插件,用于使用mccabe检查Python源代码的环路复杂度。

注意:我(@The-Compiler)从2016年开始不再使用此插件。虽然我仍然会审查拉取请求并在社区需要时发布新版本,但我没有时间继续自己维护此插件。您可能希望考虑切换到pytest-flake8tox + flake8(请参阅一些理由)。

用法

通过以下方式安装

pip install pytest-mccabe

如果您键入以下内容

pytest --mccabe

将以命令行参数为起点,发现并运行mccabe的所有以.py结尾的文件。

简单用法示例

假设您有这段(故意编写得糟糕且复杂的)代码

# 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")

安装pytest-mccabe后运行pytest将显示此函数被认为过于复杂

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

按项目和文件配置mccabe复杂度

您可以通过在pytest配置文件(例如setup.cfg)中添加一个mccabe-complexity条目来配置项目的最大复杂度,如下所示

[pytest]
mccabe-complexity=15

重新运行上述示例将看起来更好

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

如果您有一些文件,希望设置比项目范围内的更高复杂度,可以在mccabe-complexity行开头使用glob模式

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

忽略某些函数

您可以通过添加如下注释来排除某些函数从复杂度检查

def some_function():  # noqa
    ...

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

(两种方式都有效 - #noqa主要用于flake8兼容性)

仅运行mccabe检查和其他测试

您可以通过输入以下内容来限制测试运行仅执行“mccabe”测试,而不执行任何其他测试

pytest --mccabe -m mccabe

这将仅运行标记有“mccabe”关键字的测试,这些关键字是由此插件添加的mccabe测试项

如果您正在使用pytest < 2.4,则可以使用以下调用达到相同的效果

pytest --mccabe -k mccabe

注意

此插件的仓库在https://github.com/The-Compiler/pytest-mccabe

有关pytest的更多信息,请参阅https://pytest.cn

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

变更

0.1

  • 初始版本。

1.0

  • 停止支持Python 2.6、3.2、3.3和3.4

  • 添加对Python 3.5、3.6和3.7的支持

  • 使此插件与pytest 4.x和5.x兼容

  • 停止支持“setup.py test”

  • 删除过时的pytest-cache依赖

  • 各种代码/CI清理

2.0

  • 停止支持Python 2.7

  • 停止支持pytest < 5.4

  • 添加对Python 3.8的支持(无需更改)

  • 修复pytest >= 5.4的弃用警告(感谢Martin Thoma提供的PR!)

  • 各种代码/CI清理

项目详情


下载文件

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

源代码分发

pytest-mccabe-2.0.tar.gz (6.7 kB 查看哈希值)

上传时间: 源代码

构建分发

pytest_mccabe-2.0-py2.py3-none-any.whl (6.2 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持

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