Pylint 会抛出一些文件缺少文档字符串的错误。我尝试为每个类、方法和函数添加文档字符串,但 Pylint 似乎还检查文件是否应该在它们的开头有一个文档字符串。我可以以某种方式禁用它吗?
我希望收到有关类、函数或方法中缺少文档字符串的通知,但文件不应强制要求具有文档字符串。
(在专有源文件的开头是否经常出现法律术语的术语?有例子吗?我不知道单独发布这样一个琐碎的问题是否可以。)
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.
"""
很快,您就会发现有用的东西放在那里,例如提供如何使用模块的各种类/函数的示例,这些类/函数不一定属于类/函数的各个文档字符串(例如这些互动,或诸如快速入门指南之类的东西)。
[2021 年 12 月 21 日更新]
正如followben在评论中提到的,更好的解决方案是禁用我们想要禁用的规则,而不是使用--errors-only
.
这可以通过在设置中添加它来完成:
"python.linting.pylintArgs": ["--disable=C0111"]
[旧答案]
我在这里找到了这个。
您可以为 Pylint 添加“--errors-only”标志以禁用警告。
为此,请转到设置。编辑以下行:
"python.linting.pylintArgs": []
作为
"python.linting.pylintArgs": ["--errors-only"]
你很高兴去!
我认为在不禁用此功能的情况下修复相对容易。
def kos_root():
"""Return the pathname of the KOS root directory."""
global _kos_root
if _kos_root: return _kos_root
您需要做的就是在每个函数中添加三重双引号字符串。
我来寻找答案是因为,正如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
只需将以下行放在要禁用这些警告的任何文件的开头。
# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring
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 2.6.0,丢失的文档字符串消息不会消失,即使在我的文件中明确禁用missing-module-docstring
,missing-class-docstring
也是如此。最后,以下配置对我有用:missing-function-docstring
.pylintrc
[MESSAGES CONTROL]
disable=missing-docstring,empty-docstring
显然,Pylint 2.6.0 仍然验证文档字符串,除非这两个检查都被禁用。
不,Pylint 目前不允许您区分文档字符串警告。
但是,您可以将Flake8与 doc-string 扩展一起用于所有 Python 代码检查以忽略此警告。
使用 pip 安装 doc-string 扩展(在内部,它使用pydocstyle)。
pip install flake8_docstrings
然后,您可以使用--ignore D100
开关。例如,flake8 file.py --ignore D100
编辑文件“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"
],
}
Ctrl+ Shift+P
然后键入并单击 > 首选项:配置语言特定设置
然后在此之后键入“python”。粘贴代码
{
"python.linting.pylintArgs": [
"--load-plugins=pylint_django", "--errors-only"
],
}
我只是想补充一下上面@Milovan Tomašević发布的内容。我决定python.linting.pylintArgs
在 VSCode 的全局设置中使用,因为它比使用.pylintrc
文件方便得多。
另外,我没有使用开关的 ID(例如C0115
),而是使用了符号名称。
Pylint 选项和开关的完整参考在这里。
{
"python.linting.pylintArgs": [
"--disable=missing-class-docstring",
"--disable=missing-function-docstring"
]
}
如果您是想要忽略这一点的Visual Studio Codepython.linting.pylintArgs
用户,您可以添加.vscode/settings.json
:
{
...
"python.linting.pylintArgs": [
"--disable=C0114",
"--disable=C0115",
"--disable=C0116",
],
...
}
转到文件“settings.json”并禁用 Python pydocstyle
:
"python.linting.pydocstyleEnabled": false