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

mpo*_*ett 3 python tox flake8

我有一个项目,我使用 tox 进行测试,它运行 flake8 测试。我想对我的测试目录应用与其他目录不同的 flake8 配置;我想在测试中忽略 E402,因为我sys.path在导入要测试的模块之前搞乱了。

flake8 配置语法仅允许您将一种配置应用于包含/排除匹配的文件,因此我添加了./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
Run Code Online (Sandbox Code Playgroud)

./测试/.flake8

[flake8]
ignore = E402
Run Code Online (Sandbox Code Playgroud)

使用我的文件中的 flake8 选项tox.ini,点文件始终被忽略。如果文件中没有选项,tox.ini则 flake8 从命令行运行时会使用 dotfile,但在 tox 运行时会被忽略。

看起来没有办法将不同的 flake8 配置应用于同一项目下的不同文件集。我是否在配置语法中遗漏了一些可以让我在这里做我想做的事情的东西?

Moo*_*oot 6

从版本 3.7.0 开始,flake8 现在包含一个标志来执行您想要的操作:per-file-ignores。要在配置文件中使用它,请执行以下操作:

[flake8]
per-file-ignores =
    tests/*: E402
Run Code Online (Sandbox Code Playgroud)

它也可以通过在调用中添加如下标志来应用在flake8命令行上:

--per-file-ignores=tests/*.py:E402
Run Code Online (Sandbox Code Playgroud)