首页 > 解决方案 > 如何在存储库级别禁用 PyCharm 中的特定 PEP8 警告?

问题描述

寻找一种方法,如果可能的话,在存储库级别为在 PyCharm 中加载的 Python 项目禁用特定的 PEP8 警告(即保存一个存储库提交的配置文件,该文件可以将 PEP8 配置提示应用于在 PyCharm 中加载项目的任何用户)。


在其他开发人员可能使用 PyCharm 为项目做出贡献的情况下。我个人自己不使用 PyCharm(只是一个文本编辑器),并且构建/linting 是通过各种 tox 环境执行的。有一些我特别不喜欢的选择PEP8规则,例如在代码的特定区域(例如E305)注入两个空行的推广。虽然 linter 可以配置为忽略特定的 PEP8 规则,并且开发人员可以调用具有tox相同 linter 配置的命令(如 ),但使用 PyCharm 的开发人员仍将在其环境中看到这些警告。例如:

PyCharm 显示 E305 警告

我遇到的问题是开发人员将对实现进行(不希望的)调整,并提交它们以更改拉取请求。虽然开发人员可以自行解除警告,但我不希望开发人员必须假设/解释项目遵循的 PEP8 规则(除了文档中可能提到的CONTRIBUTING内容)。此外,虽然可以使用# noqa注释修改源文件以提示 IDE 忽略该行的问题,但我正在寻找一种替代方法来忽略特定的 PEP8 规则,而不会# noqa在整个实现过程中添加各种提示。

例如,寻找一种方法来禁用E305理论文件中的所有警告,.pycharm如下所示:

[pycharm]
ignore = E305

标签: pythonpycharm

解决方案


经过一些额外的调查,似乎不支持(截至 2020 年 9 月 23 日;v2020.2)存储库特定的 PEP8 警告自定义。

IDEpycodestyle用于 PEP8 处理。从pycodestyle 的配置中测试选项表明,用户特定的配置将禁用 IDE 中的各种 PEP8 提示;但是,目标是避免让用户在这种情况下配置任何内容。虽然 pycodestyle 表示它也会查看setup.cfgand tox.ini,但 IDE 不会以某种方式调用 pycodestyle 来使用它们。检查IDE 如何调用 pycodestyle表明它将提供源的内容stdin以获取信息。pycodestyle 仅隐式加载支持的项目特定配置(即setup.cfgtox.ini) 基于在现有工作目录上提供的输入文件(如果提供)的公共前缀 pycodestyle 被调用 -- 不幸的是,由于 PyCharm 在将 pycodestyle 调用到项目的根目录时不会更改工作目录,因此项目特定的配置不能隐含加载。

在他们的问题跟踪器上创建了一个问题:

PY-44684 | 支持 pycodestyle 项目特定的配置设置 (pep8) https://youtrack.jetbrains.com/issue/PY-44684


推荐阅读