如何在Pylint中的文件级别禁用"缺少docstring"警告?

Mri*_*lla 60 python pylint

Pylint会抛出某些文件缺少文档字符串的错误.我尝试将docstrings添加到每个类,方法和函数,但似乎Pylint还检查文件应该在文档字符串的开头.我可以以某种方式禁用它吗?我希望收到有关类,函数或方法中缺少docstring的通知,但对于文件来说,文件字符串不应该是强制性的.

(在专有源文件的开头是否有一个法律术语的术语?任何例子?我不知道是否可以单独发布这样一个微不足道的问题.)

gur*_*lex 56

Python模块有一个文档字符串很好,解释了模块的功能,它提供了什么,以及如何使用类的示例.这与您经常在文件开头提供版权和许可信息的评论不同,IMO不应该在文档字符串中(有些人甚至认为它们应该完全消失,请参阅例如http:// hackerboss. com/get-rid-of-templates /)

Pylint没有单独的代码用于可以发生文档字符串的各个位置,因此您所能做的就是禁用C0111.问题是,如果你在模块范围禁用它,那么它将在模块中的任何地方被禁用(即你不会得到任何C行缺少函数/类/方法docstring.这可能是不好的,你可能想要如果它困扰你,在github上为这个pylint问题做出贡献.

所以我建议添加一些小的缺失docstring,说:

[MASTER]
disable=
    C0114, # missing-module-docstring
Run Code Online (Sandbox Code Playgroud)

很快,您将找到有用的东西放在那里,例如提供如何使用模块的各种类/函数的示例,这些类/函数不一定属于类/函数的各个文档字符串(例如如何互动,或类似快速入门指南的东西).

  • -1表示开始"这是模块foobar"的文档字符串.这个模块已经是不言而喻的了.如果模块更改名称,则重复它是多余的并且容易过时.只需包含"为此提供高级别支持"部分. (20认同)
  • 令人失望的答案.特别是对于Django项目.forms.py"这些是模型......只是开玩笑!它们是形式.因为,你知道,文件名为forms.py.这不是达芬奇密码.你认为这里会是什么?" (14认同)
  • `$ cat my_module/test/__ init __.py``"嘿,PyLint?SHUT UP"` (8认同)
  • 合法(和其他)样板的+1从源代码中消失.汽车的每个部件都没有附加法律通知.一定要创建一个包含项目法律文本的文件.不要将其副本放入每个文件中. (5认同)
  • Pylint 说 *`String 语句没有效果(无意义的字符串语句)`* 使用您的文档字符串示例时。 (2认同)
  • 文档需要告诉您的最重要的事情是*为什么*需要一个函数。如果这就是您的文档的全部内容,那么它通常就足够了。第二个最有用的事情是“如何”...(递归、线程不安全、严重影响网络 api 等)。最不重要的事情是它的“功能”。这应该从名称和相关的单元测试以及它的编写的干净和可读性中清楚地看出。但是,只要记住“首先为什么”,您就会知道有关文档所需的所有信息。 (2认同)

小智 36

现在已经很晚了,但我发现它很有用.所以分享.在这里找到.

您可以为pylint添加"--errors-only"标志以禁用警告.

为此,请转到设置.编辑以下行:

"python.linting.pylintArgs": []

"python.linting.pylintArgs": ["--errors-only"]

你很高兴去!

  • 它很有用,虽然`"python.linting.pylintArgs":[" - disable = C0111"],`可能更多,因为它只是安静了docstring警告.但是,设置解决了OP的问题,即如何仅在模块级别禁用这些警告. (12认同)
  • 很好的修复,但此方法的缺点是它忽略未使用的变量 (2认同)

how*_*ode 17

我只是想添加@Milovan Toma\xc5\xa1evi\xc4\x87上面发布的内容。python.linting.pylintArgs我决定在 VSCode 的全局设置中使用,因为它比使用文件方便得多.pylintrc
\n此外,我没有使用开关 ID(例如C0115),而是使用符号名称。

\n

Pylint 选项和开关的完整参考请参见此处

\n
{\n    "python.linting.pylintArgs": [\n        "--disable=missing-class-docstring",\n        "--disable=missing-function-docstring"\n    ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n


Ern*_*ßer 12

就我而言,使用 Pylint 2.6.0,即使在我的文件中显式禁用missing-module-docstring,missing-class-docstring和后,丢失的文档字符串消息也不会消失。最后,以下配置对我有用:missing-function-docstring.pylintrc

[MESSAGES CONTROL]

disable=missing-docstring,empty-docstring
Run Code Online (Sandbox Code Playgroud)

显然,Pylint 2.6.0 仍然会验证文档字符串,除非这两项检查都被禁用。


Pie*_*las 10

使用 Pylint 2.4 及更高版本,您可以missing-docstring使用以下三个子消息来区分不同的:

  • C0114( missing-module-docstring)
  • C0115( missing-class-docstring)
  • C0116( missing-function-docstring)

所以下面的.pylintrc文件应该可以工作:

[MASTER]
disable=
    C0114, # missing-module-docstring
Run Code Online (Sandbox Code Playgroud)


mat*_*tsl 9

我来寻找答案是因为,正如@cerin所说,在Django项目中,将模块文档字符串添加到django在创建新应用程序时自动生成的每个文件时都很麻烦且多余.

因此,作为pylint不允许您在docstring类型中指定差异的事实的解决方法,您可以这样做:

pylint */*.py --msg-template='{path}: {C}:{line:3d},{column:2d}: {msg}' | grep docstring | grep -v module
Run Code Online (Sandbox Code Playgroud)

你必须更新msg-template,这样当你grep时你仍然会知道文件名.这将返回除模块之外的所有其他missing-docstring类型.

然后你可以解决所有这些错误,然后运行:

pylint */*.py --disable=missing-docstring
Run Code Online (Sandbox Code Playgroud)


hen*_*ack 8

不, Pylint目前不允许您区分doc-string警告.

但是,您可以使用flake8进行所有python代码检查以及doc-string扩展,以忽略此警告.

使用pip安装doc-string扩展名(内部使用pydocstyle).

pip install flake8_docstrings
Run Code Online (Sandbox Code Playgroud)

然后你可以使用--ignore D100开关.例如flake8 file.py --ignore D100


Kev*_* Li 8

只需将以下行放在要禁用这些警告的任何文件的开头。

# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring
Run Code Online (Sandbox Code Playgroud)

  • 如果您想禁用所有内容,您只需禁用“missing-docstring”(适用于 2.4.0 之前的版本)。 (2认同)

小智 7

我认为修复相对容易而不会禁用此功能.

def kos_root():
    """Return the pathname of the KOS root directory."""
    global _kos_root
    if _kos_root: return _kos_root
Run Code Online (Sandbox Code Playgroud)

您需要做的就是在每个函数中添加三重双引号字符串.


Mil*_*vić 6

如果您是Visual Studio Code用户并希望忽略此内容,您可以python.linting.pylintArgs添加.vscode/settings.json

{
    ...
    "python.linting.pylintArgs": [
        "--disable=C0114",
        "--disable=C0115",
        "--disable=C0116",
    ],
    ...
}
Run Code Online (Sandbox Code Playgroud)


小智 5

编辑文件“C:\Users\Your User\AppData\Roaming\Code\User\settings.json”并python.linting.pylintArgs在最后添加这些行,如下所示:

{
    "team.showWelcomeMessage": false,
    "python.dataScience.sendSelectionToInteractiveWindow": true,
    "git.enableSmartCommit": true,
    "powershell.codeFormatting.useCorrectCasing": true,
    "files.autoSave": "onWindowChange",
    "python.linting.pylintArgs": [
        "--load-plugins=pylint_django",
        "--errors-only"
    ],
}
Run Code Online (Sandbox Code Playgroud)


小智 5

  1. Ctrl+ Shift+P

  2. 然后输入并单击 > 首选项:配置语言特定设置

  3. 然后输入“python”。粘贴代码

     {
         "python.linting.pylintArgs": [
             "--load-plugins=pylint_django", "--errors-only"
         ],
     }
    
    Run Code Online (Sandbox Code Playgroud)


Gli*_*nko 5

我正在使用 VSCode (1.78.0),看起来他们更改了参数。
你应该使用

"pylint.args": [
"--disable=C0116",
"--disable=C0111",
"--disable=C0114"
Run Code Online (Sandbox Code Playgroud)

]