【问题标题】:How to disable specific PEP8 warnings in PyCharm at the repository level?如何在存储库级别禁用 PyCharm 中的特定 PEP8 警告?
【发布时间】:2021-01-06 23:44:22
【问题描述】:

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


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

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

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

[pycharm]
ignore = E305

【问题讨论】:

  • 也许this 是一个选项?
  • @OlvinR​​oght,感谢您的提示。但是,该功能似乎需要让用户配置他们的 IDE。这适用于尝试同步设置的公司/团体;但我的用例、存储库和潜在 PyCharm 用户不是独立方。

标签: python pycharm


【解决方案1】:

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

IDE 使用pycodestyle 进行 PEP8 处理。测试来自pycodestyle's configuration 的选项表明,用户特定的配置将禁用 IDE 中的各种 PEP8 提示;但是,目标是避免让用户在这种情况下配置任何内容。虽然 pycodestyle 表示它还将查看 setup.cfgtox.ini,但 IDE 不会以某种方式调用 pycodestyle 来使用它们。检查how the IDE invokes pycodestyle 表明它将通过stdin 提供源的内容以获取信息。 pycodestyle 仅基于现有工作目录上提供的输入文件(如果提供)的公共前缀隐式加载受支持的项目特定配置(即setup.cfgtox.ini) pycodestyle 被调用——不幸的是,因为 PyCharm 不会改变项目根目录调用pycodestyle时的工作目录,不能隐式加载项目特定的配置。

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

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

【讨论】:

    【解决方案2】:

    有办法做到这一点,但目前它需要将相应的 PyCharm 的项目设置保存在 VCS 中。对于每个报告的 pycodestyle.py 错误,都有一个专用的快速修复“忽略此类错误”,其中包括“PEP 8 编码样式违规”检查设置中的相应错误代码(然后这些代码通过其直接传递给 pycodestyle.py --ignore 选项)。

    然后您可以在检查设置中找到并编辑这些代码。

    如果配置了每个项目的检查配置文件,这些设置将保存在 .idea/inspectionProfiles/Your_Profile_Name.xml 中,并且可以与团队或外部贡献者共享。

    显然,如果您不想在存储库中公开特定于 IDE 的配置文件,则它不会起作用,尤其是当有更好的、独立于工具的位置来存放此类首选项时。报告的PY-44684 是一个合法的问题,我同意。

    【讨论】:

      猜你喜欢
      • 2013-09-30
      • 1970-01-01
      • 2017-05-03
      • 2011-04-15
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 2016-04-04
      相关资源
      最近更新 更多