PyCharm 如何对整个文件进行 noinspection?

34 投票
3 回答
11784 浏览
提问于 2025-04-18 01:57

在PyCharm中,有没有办法对整个文件禁用检查功能?

这样做的原因是因为在使用py.test的时候,它有一些叫做“fixtures”的东西,这些东西会和函数参数产生冲突,导致一些引用无法解析。例如:

from myfixtures import user  # Unused import statement warning

def test_is_awesome(user):  # Shadows name 'user' from outer scope warning
    assert user.is_awesome()

此外,py.test还会发出其他警告,比如使用pytest.raises()时,会在pytest.py中出现“找不到引用‘raises’”的错误。

也许还有其他方法可以解决这些问题?或者我是不是用错了py.test?

3 个回答

2

我发现把每条语句的检查放在文件的开头:

    ...
    # noinspection PyUnusedLocal
    instance = mommy.make(Contact)

这样就可以在整个文件中都不进行检查了:

# noinspection PyUnusedLocal
from django.urls import reverse
6

关于“我是不是用错了py.test?”这个问题,来简单说一下:

导入测试工具(fixtures)并不是最好的做法。更好的方法是把这些工具放在需要它们的包的conftest.py文件里。如果一个工具在两个包中都用到,那就把conftest.py放在它们的父目录下,把工具放在里面。这样可以避免一些未使用的导入和命名冲突的警告。

至于pytest.raises的命名空间问题,目前我觉得没有解决办法。这也是pylint(一个代码检查工具)遇到的问题(我听说有人在努力为pylint开发一个py.test的插件来解决这些问题)。所以最终来说,代码检查工具还是需要对py.test有一点了解。

29

在PyCharm中,有办法对整个文件禁用检查吗?

可以的。

注意:这个回答只针对上面的问题(而不是关于“也许还有其他方法来解决这些问题?也许我使用py.test不正确?”)。

  1. 打开设置/偏好设置 | 外观与行为 | 范围
  2. 创建一个新的范围,把那些“多余”的文件包含进去
  3. 打开设置/偏好设置 | 编辑器 | 检查
  4. 找到那个“有问题”的检查项
  5. 在合适的列表中选择刚刚创建的范围(旧版IDE需要右键点击并选择“添加范围”)
  6. 对这个特定的范围禁用该检查。

以下是我在PhpStorm 2022.3中的一个例子(在PyCharm中也是类似的):
在这里输入图片描述

在这里输入图片描述

另外(应该有效:虽然这取决于具体的检查项... 我不是PyCharm用户,所以无法确认)

  1. 在代码中光标停留在错误/警告的位置时,使用Alt + Enter(或者通过鼠标点击灯泡图标)
  2. 从弹出的菜单中选择正确的选项
  3. 使用右箭头键展开子菜单(用鼠标操作可能会有点麻烦,因为点击区域比较小)
  4. 寻找抑制检查选项
  5. 这会在前一行(或者文件顶部,取决于你选择的内容)添加一个特殊的注释,以仅忽略该检查

在这里输入图片描述 (这是在PhpStorm中的样子;可用的选项可能因检查项而异)

相关链接: https://stackoverflow.com/a/20803118/783119

撰写回答