【问题标题】:Can I get PyCharm to suppress a particular warning on a single line?我可以让 PyC​​harm 在一行中抑制特定警告吗?
【发布时间】:2017-02-12 08:36:56
【问题描述】:

PyCharm 提供了一些关于代码风格、约定和逻辑陷阱的有用警告。如果我尝试提交带有警告(或错误)的代码,它还会提供通知。

有时我有意识地忽略这些针对特定代码行的警告(出于各种原因,通常是考虑到第三方库的实现细节)。我想抑制警告,但只是针对那条线(如果警告出现在我没有故意的不同行上,我想知道它!)

如何在 PyCharm 中做到这一点? (强烈推荐遵循通用的 Python 约定。)

【问题讨论】:

  • 很高兴有一种方法可以在 PyCharm 中做到这一点,但由于不是我的所有队友都使用 PyCharm,我真的希望有一个等效于 Java 的 @SuppressWarnings 注释,以表明“是的,这个代码行看起来很糟糕,但没关系,我保证'。 stackoverflow.com/a/14463362/1450294 ← 这个答案看起来很有希望,但是当我记录异常时,我仍然无法让“太宽泛的异常条款”警告消失。
  • @Michael Scheper:AFAIK,这不是 PyCharm 特定的抑制,而是pylint 抑制。只要你们都使用pylint,你应该得到你所期望的。
  • @sophros:我知道这有点离题(因为这个问题专门针对 PyCharm),但你能详细说明你的回复吗?有没有办法告诉pylint 在代码中忽略特定代码行的特定警告?
  • @MichaelScheper:经过彻底检查后,我必须承认 - 我在上面错了 - PyCharm 和 pylint 必须明确使用单独的命令。这一切都在the question about both的答案中有所描述。

标签: python pycharm compiler-warnings suppress-warnings


【解决方案1】:

要禁止对特定代码行的 PyCharm 代码检查,您可以使用以下构造:

# noinspection INSPECTION_NAME
your_line_of_code_to_suppress

您可以从list of inspection names 中获取检查名称(上面的INSPECTION_NAME)(它们非常具有描述性)。

要显式抑制 pylint 命令行消息,您必须使用不同的 cmets/命令,例如 described here (pylint error names)。

【讨论】:

  • 如果我抑制 pylint 错误,那么 Pycharm 不会再警告我该错误了吗?这就是它的用途吗?
  • 是的。除非您取消抑制,否则抑制的 pylint 警告不会再次出现。
  • 实际上,没有必要为此使用专门的可用检查列表。对于每个检查警告,编辑器中都有一个特殊的快速修复,可以自动插入带有正确检查 ID 的此类注释。它可以找到为:“显示上下文操作”(Windows/Linux 上的 Alt+Enter)-> 解决问题的一些标准操作 -> 子菜单 -> “抑制for ..." 例如,Alt+Enter -> 删除语句 -> 右箭头 -> 抑制 for 语句将为未使用的局部变量插入抑制注释,等等。
  • 感谢@pylover 提供了令人惊叹的 PyCharm 名称列表(并感谢帖子所有者链接到它们)。
  • 有没有办法禁用对多行语句的特定行的检查(例如,除了这个对 lambda 函数 myfunc( some_params, lambda: ..., # noinspection PyTypeChecker more_params) 的调用以删除参数中的类型检查,其中预期类型是函数和lambda 被传递,同时保持对其他参数的类型检查)。似乎不支持。有人知道方法吗?
【解决方案2】:

本质上,对于您想要禁止警告的文件,通过代码检查运行它,发布 PyCharm 将在该特定文件中向您发出警告。然后,您可以查看警告并告诉 PyCharm 禁止对特定语句发出警告。

可以从 Code-->Inspect Code 菜单访问代码检查,您可以从中选择要检查的文件。

下图显示了如何在通过 CodeInspection 运行代码后对图像执行此操作

有关抑制警告的更多详细信息的链接:https://www.jetbrains.com/help/pycharm/2016.1/suppressing-inspections.html#1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 2020-07-31
    • 2015-12-16
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 2016-11-09
    • 2013-09-26
    相关资源
    最近更新 更多