运行mccabe代码复杂性检查器的pytest插件。
pytest-mccabe的Python项目详细描述
pytest mccabe
< 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
[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
- 初次发布。