145

Pylint 会抛出一些文件缺少文档字符串的错误。我尝试为每个类、方法和函数添加文档字符串,但 Pylint 似乎还检查文件是否应该在它们的开头有一个文档字符串。我可以以某种方式禁用它吗?

我希望收到有关类、函数或方法中缺少文档字符串的通知,但文件不应强制要求具有文档字符串。

(在专有源文件的开头是否经常出现法律术语的术语?有例子吗?我不知道单独发布这样一个琐碎的问题是否可以。)

4

13 回答 13

156

Python 模块最好有一个文档字符串,解释模块的作用、提供的功能以及如何使用类的示例。这与您经常在文件开头看到的提供版权和许可信息的注释不同,IMO 不应将其放入文档字符串中(有些人甚至认为它们应该完全消失,参见例如Get Rid of Source Code Templates

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

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

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

[MASTER]
disable=
    C0114, # missing-module-docstring

对于以前版本的 Pylint,它没有针对可能出现文档字符串的各个位置的单独代码,因此您所能做的就是禁用C0111。问题是,如果您在模块范围内禁用它,那么它将在模块中的任何地方被禁用(即,您不会因为缺少函数/类/方法文档字符串而获得任何 C 行。这可以说是不好的。

因此,我建议添加缺少的小文档字符串,例如:

"""
high level support for doing this and that.
"""

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

于 2011-10-24T16:21:22.320 回答
82

[2021 年 12 月 21 日更新]

正如followben在评论中提到的,更好的解决方案是禁用我们想要禁用的规则,而不是使用--errors-only.

这可以通过在设置中添加它来完成:

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

[旧答案]

我在这里找到了这个。

您可以为 Pylint 添加“--errors-only”标志以禁用警告。

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

"python.linting.pylintArgs": []

作为

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

你很高兴去!

于 2017-11-10T16:35:19.513 回答
12

我认为在不禁用此功能的情况下修复相对容易。

def kos_root():
    """Return the pathname of the KOS root directory."""
    global _kos_root
    if _kos_root: return _kos_root

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

于 2016-11-23T03:34:04.117 回答
11

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

因此,作为 Pylint 不允许您指定文档字符串类型差异这一事实的解决方法,您可以这样做:

pylint */*.py --msg-template='{path}: {C}:{line:3d},{column:2d}: {msg}' | grep docstring | grep -v module

您必须更新 msg 模板,以便在 grep 时仍然知道文件名。这将返回除模块之外的所有其他缺失文档字符串类型。

然后你可以修复所有这些错误,然后运行:

pylint */*.py --disable=missing-docstring
于 2016-09-15T08:08:10.697 回答
11

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

# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring
于 2020-01-21T07:29:17.790 回答
10

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

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

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

[MASTER]
disable=
    C0114, # missing-module-docstring
于 2019-09-10T13:31:17.620 回答
8

在我的情况下,使用 Pylint 2.6.0,丢失的文档字符串消息不会消失,即使在我的文件中明确禁用missing-module-docstring,missing-class-docstring也是如此。最后,以下配置对我有用:missing-function-docstring.pylintrc

[MESSAGES CONTROL]

disable=missing-docstring,empty-docstring

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

于 2020-10-27T13:00:45.843 回答
7

,Pylint 目前不允许您区分文档字符串警告。

但是,您可以将Flake8与 doc-string 扩展一起用于所有 Python 代码检查以忽略此警告。

使用 pip 安装 doc-string 扩展(在内部,它使用pydocstyle)。

pip install flake8_docstrings

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

于 2017-10-02T09:44:58.293 回答
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"
    ],
}
于 2019-09-22T18:45:44.217 回答
3
  1. Ctrl+ Shift+P

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

  3. 然后在此之后键入“python”。粘贴代码

     {
         "python.linting.pylintArgs": [
             "--load-plugins=pylint_django", "--errors-only"
         ],
     }
    
于 2020-03-27T05:15:18.253 回答
3

我只是想补充一下上面@Milovan Tomašević发布的内容。我决定python.linting.pylintArgs在 VSCode 的全局设置中使用,因为它比使用.pylintrc文件方便得多。
另外,我没有使用开关的 ID(例如C0115),而是使用了符号名称。

Pylint 选项和开关的完整参考在这里

{
    "python.linting.pylintArgs": [
        "--disable=missing-class-docstring",
        "--disable=missing-function-docstring"
    ]
}
于 2021-11-11T02:54:56.600 回答
1

如果您是想要忽略这一点的Visual Studio Codepython.linting.pylintArgs用户,您可以添加.vscode/settings.json

{
    ...
    "python.linting.pylintArgs": [
        "--disable=C0114",
        "--disable=C0115",
        "--disable=C0116",
    ],
    ...
}
于 2021-10-17T19:56:48.647 回答
0

转到文件“settings.json”并禁用 Python pydocstyle

"python.linting.pydocstyleEnabled": false
于 2020-09-16T23:59:00.157 回答