Mar*_*ese 19

正如其他人所说,您可以提供disable参数来禁用特定消息。我想详细说明一下。

  1. 这是禁用多个消息并提供多个参数的语法,对我来说,通过谷歌搜索它并不是立即显而易见的:

    "python.linting.pylintArgs": [
        "--max-line-length=80",
        "--disable=W0142,W0403,W0613,W0232,R0903,R0913,C0103,R0914,C0304,F0401,W0402,E1101,W0614,C0111,C0301"
    ]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您说,禁用一条消息后,您开始看到更多错误。 根据文档,这实际上可能有意义:

    默认情况下,Visual Studio代码中的Python被配置为使用一组对大多数Python开发人员都友好的规则:

    • 启用所有错误(E)和致命(F)消息。
    • 禁用所有约定(C)和重构(R)消息。
    • 禁用除以下以外的所有警告(W)消息:
      • 无法访问(W0101):无法访问的代码
      • 重复键(W0109):字典中的重复键%r
      • 不必要的分号(W0301):不必要的分号
      • 全局变量未分配(W0602):对%r使用全局,但未完成分配
      • 未使用变量(W0612):未使用变量%r
      • binary-op-exception(W0711):捕获异常是二进制“%s”操作的结果
      • 格式错误的字串(W1302):格式无效的字串
      • 字符串中的反斜杠(W1401):字符串中的反斜杠
      • 坏开放模式(W1501):“%s”不是有效的开放模式

    这些规则通过传递给Pylint的以下默认参数来应用:

    --disable=all
    --enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode
    
    Run Code Online (Sandbox Code Playgroud)

    只要将python.linting.pylintUseMinimalCheckers设置为true(默认值),就会传递这些参数 。如果在中指定值pylintArgs或使用Pylint配置文件(请参阅下一节),则将pylintUseMinimalCheckers其隐式设置为false

    换句话说,在VS Code中,默认情况下PyLint相当松懈,仅向您显示错误消息和一些手动警告。但是,当您手动设置pylintArgs为某些内容时,将pylintUseMinimalCheckers被忽略,从而打开所有邮件的闸门。这可能就是禁用一条消息导致显示更多消息的原因。再说一次,我不确定为什么首先会看到未使用的导入消息,因为根据文档,默认情况下应该将其取消显示。

  3. 实际上,这目前不起作用:( python.linting.pylintUseMinimalCheckers": true对我来说,在这个特定的时间点,但希望对您(以后的读者)有用。为了获得相同的效果,我必须手动将pylintArgs其设置为应该自动设置的值:

    "python.linting.pylintArgs": [
        "--disable=all",
        "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode"
    ]
    
    Run Code Online (Sandbox Code Playgroud)
  4. 奖励:这是我使用的已禁用消息列表的说明,如上面第1点所示。通常从此处获取

    # Disabled messages
    #    Pointless
    #       W0142 = *args and **kwargs support
    #       W0403 = Relative imports
    #       W0613 = Unused argument
    #       W0232 = Class has no __init__ method
    #       R0903 = Too few public methods
    #       R0913 = Too many arguments
    #       C0103 = Invalid name
    #       R0914 = Too many local variables
    #       C0304 = Final newline missing
    #
    #    PyLint's module importation is unreliable
    #       F0401 = Unable to import module
    #       W0402 = Uses of a deprecated module
    #       E1101 = Module x has no y member
    #
    #    Already an error when wildcard imports are used
    #       W0614 = Unused import from wildcard
    #
    #    Stricter messages that can be disabled until everything else has been fixed
    #       C0111 = Missing docstring
    #       C0301 = Line too long
    
    Run Code Online (Sandbox Code Playgroud)

  • 我认为这应该是公认的答案。您不仅给出了禁用警告和错误消息的答案,还给出了在禁用它们后他们可能会看到 500 多条消息的原因。 (2认同)
  • 完整的代码列表可以在这里找到:http://pylint-messages.wikidot.com/all-codes。 (2认同)
  • 答案比问题广泛得多,非常有用。同时,在最新版本的 VS Code 中,您不应打开 JSON 文件,您只需在“设置”中找到“Pylint Args”并逐行添加项目即可。 (2认同)

joe*_*tz1 6

"python.linting.pylintArgs": [
    "--disable=C0111"
],
Run Code Online (Sandbox Code Playgroud)

您也可以按消息类型禁用,例如,--disable=W.

一个很好的参考是www.pylintcode.info,其中包含消息ID和消息类型的列表.

  • 链接已失效。这是一个替代方案:http://pylint-messages.wikidot.com/all-codes (2认同)

Kow*_*a R 6

在文件顶部的行中添加以下内容将消除错误...并确保程序内的行是否重复(如果是),则将其删除。

 # pylint: disable=unused-wildcard-import, method-hidden
 # pylint: enable=too-many-lines
Run Code Online (Sandbox Code Playgroud)

参考:https://pylint.readthedocs.io/en/latest/faq.html#is-it-possible-to-locally-disable-a-pspecial-message


Pat*_*ick 3

在 VS Code 设置中 ( CTRL+COMMA)

"python.linting.pylintArgs": [
    "--disable=W0614"
],
Run Code Online (Sandbox Code Playgroud)

有关更多想法:https://code.visualstudio.com/docs/python/linting#_commandline-arguments-and-configuration-files

  • 它似乎不再起作用了。我现在看到了 500 多个我以前没有看到的警告。我认为它禁用了所有其他参数。请注意,pylinArgs 之前是空的。 (3认同)