pytest插件,用于运行mccabe代码复杂度检查器。
项目描述
pytest-mccabe
pytest插件,用于使用mccabe检查Python源代码的环路复杂度。
注意:我(@The-Compiler)从2016年开始不再使用此插件。虽然我仍然会审查拉取请求并在社区需要时发布新版本,但我没有时间继续自己维护此插件。您可能希望考虑切换到pytest-flake8或tox + 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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 050a1f1c145202ea87f0c0ad7b529f088098040fe2eb8e5d797d36be86e0fa20 |
|
MD5 | 6cc0bbd8c00ce71311f69f7ac57db15a |
|
BLAKE2b-256 | 9d442f99366f1bf6f38cfb35da47446f364dfe25c8b7e5a781c0f3bb61840205 |
pytest_mccabe-2.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9b1708efd52b8724dedcfe48ec668ab5bda2f7ffb1c85a2edcd4f36541307d04 |
|
MD5 | fe11ccdcecc9a8c97245a2f607b12fc9 |
|
BLAKE2b-256 | 5497052f65a1b55131f4f3b7c028cd31fe5ec4acff296c33e9bfe17bddc5f129 |