将备用flake8规则应用于文件子集

时间:2018-05-11 23:32:34

标签: python tox flake8

我有一个项目,我正在使用tox进行测试,它运行flake8测试。我想从其他所有内容中将不同的flake8配置应用到我的tests目录中;我想在我的测试中忽略E402,因为在导入要测试的模块之前,我正在弄乱sys.path

flake8配置语法只允许您将一个配置应用于与include / exclude匹配的文件,因此我添加了./tests/.flake8来添加仅适用于这些文件的配置。

./ tox.ini

[tox]
envlist = lint, py27, py36

[testenv]
commands =
    coverage run --source=myModule -a setup.py test

[testenv:lint]
basepython = python3
ignore_errors = True
deps =
    -r{toxinidir}/requirements_test.txt
commands =
    flake8
    pylint myModule
    pydocstyle myModule tests

[flake8]
count = true
statistics = True

./测试/ .flake8

[flake8]
ignore = E402

使用我的tox.ini文件中的flake8选项,将始终忽略dotfile。在tox.ini文件中没有选项时,flake8从命令行运行dotfile,但在tox运行时忽略它。

看起来似乎没有办法将不同的flake8配置应用于同一项目下的不同文件集。我是否遗漏了配置语法中允许我在此处执行操作的内容?

2 个答案:

答案 0 :(得分:2)

从3.7.0版开始,flake8 FB integration checklist标记了您要执行的操作:per-file-ignores。要在您的配置文件中使用它,请执行以下操作:

[flake8]
per-file-ignores =
    tests/*: E402

也可以通过将这样的标志添加到您的flake8调用中,将其应用于命令行:

--per-file-ignores=tests/*.py:E402

答案 1 :(得分:1)

您可以尝试运行flake8两次 - 一次使用不包含tests/的全局配置,第二次只在tests/中运行:

commands =
    flake8 --exclude=tests
    cd tests && flake8