如何在vs代码中禁用Pylint未使用的导入错误消息

时间:2018-08-31 23:01:43

标签: python visual-studio-code pylint

如何禁止这些错误消息在vs代码的问题框中弹出

error messages

6 个答案:

答案 0 :(得分:10)

正如其他人所说,您可以提供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"
    ]
    
  2. 您说,禁用一条消息后,您开始看到更多错误。根据the documentation,这实际上可能是有道理的:

      

    Visual Studio代码中的Python默认配置为使用一组   对最大数量的Python友好的规则规则   开发人员:

         
        
    • 启用所有错误(E)和致命(F)消息。
    •   
    • 禁用所有约定(C)和重构(R)消息。
    •   
    • 禁用除以下内容以外的所有警告(W)消息:      
          
      • 无法访问(W0101):无法访问的代码
      •   
      • 重复键(W0109):字典中的重复键%r
      •   
      • 不必要的分号(W0301):不必要的分号
      •   
      • global-variable-not-assigned(W0602):对%r使用global,但未完成分配
      •   
      • 未使用变量(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
    
         

    只要   python.linting.pylintUseMinimalCheckers设置为true(默认值)。   如果您在pylintArgs中指定一个值或使用Pylint配置   文件(请参阅下一节),则pylintUseMinimalCheckers为   隐式设置为false

    换句话说,PyLint在VS Code中默认情况下相当宽松,仅向您显示错误消息和一些手工挑选的警告。但是,当您手动将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"
    ]
    
  4. 奖金:这是我使用的已禁用消息列表的说明,如上面第1点所示。它主要来自here

    # 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
    

答案 1 :(得分:6)

"python.linting.pylintArgs": [
    "--disable=C0111"
],

您还可以按消息类型(例如--disable=W)禁用。

www.pylintcode.info是一个很好的参考,其中列出了消息ID和消息类型。

答案 2 :(得分:3)

在您的VS代码设置(CTRL+COMMA

"python.linting.pylintArgs": [
    "--disable=W0614"
],

有关更多建议,请访问:https://github.com/DonJayamanne/pythonVSCode/issues/570

答案 3 :(得分:1)

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

 # pylint: disable=unused-wildcard-import, method-hidden
 # pylint: enable=too-many-lines

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

答案 4 :(得分:0)

对于简单的test.py,我没有修改设置,而是仅应用于我使用的那个文件 #pylint:disable = W0614 将此行放在文件顶部,然后pylint自动识别它。

这消除了100条未使用的进口警告

您可以像这样继续禁用

# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring
# pylint: disable=wildcard-import
# pylint: disable=W0614

答案 5 :(得分:0)

我使用 pylint

Ctrl+PPython Select Linter > 选择pylint

一。 vscode 说那些警告类型

  • 从 sqlalchemypylint(unused-import) 导入的未使用的 PrimaryKeyConstraint
  • 来自 sqlalchemy 包的导入未分组 pylint(ungrouped-imports)
  • 导入“导入日志”应该放在模块顶部的pylint(wrong-import-position)
  • 标准导入“导入日志”应该放在“from sqlalchemy import Column, Integer, String”pylint(wrong-import-order)之前
  • 行太长 (141/100)pylint(line-too-long)
  • ...

二。忽略设置中的那些警告类型

Ctrl+P:工作区设置 JSON

{
    "python.linting.pylintArgs": [
        "--disable=wrong-import-order,wrong-import-position,unused-import,ungrouped-imports,line-too-long"
    ],
}

或使用设置 ui

Ctrl+P:工作区设置

搜索python.linting.pylintArgs

Add Itemedit item 存在。