5 题: 如何在Pylint中的文件级别禁用“缺少docstring”警告?

在...创建的问题 Thu, Nov 10, 2016 12:00 AM

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

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

    
51
5答案                              5 跨度>                         

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

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

所以我建议添加一些小的缺失文档字符串,例如:

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

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

    
52
2016-11-17 12:00:26Z
  1. + 1,用于从源代码中消失的合法(和其他)样板文件。汽车的每个部件都没有附加法律通知。一定要创建一个包含项目法律文本的文件。不要将其副本放入每个文件中。
    2012-01-31 15:16:19Z
  2. - 1表示开始“这是模块foobar”的文档字符串。这个模块已经是不言而喻的了。如果模块更改名称,则重复它是多余的并且容易过时。只需包含“为此和那部分提供高级支持”部分。
    2012-01-31 15:17:13Z
  3. @ JonathanHartley:同意。我相应地更新了答案的最后部分。
    2012-02-20 10:56:35Z
  4. 令人失望的答案。特别是对于Django项目。 forms.py“这些是模型......只是开玩笑!它们是形式。因为,你知道,文件名为forms.py。这不是达芬奇密码。你认为这里会是什么?”
    2012-04-16 18:11:39Z
  5. $ cat my_module/test/__init__.py "Hey, PyLint? SHUT UP"
    2015-05-06 12:50:40Z
  6. 醇>

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

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

要执行此操作,请转到设置。编辑以下行:

"python.linting.pylintArgs": []

作为

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

你很高兴去!

    
24
2017-11-10 16:35:19Z
  1. 这很有用,虽然"python.linting.pylintArgs": ["--disable=C0111"],可能更多,因为它只是安静了docstring警告。但是,设置解决了OP的问题,即如何仅在模块级别禁用这些警告。
    2018-04-06 10:14:44Z
  2. 这是一个更好的选项,因为你只关心错过类的错误,而不是文档字符串警告
    2018-08-15 04:54:09Z
  3. 醇>

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

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

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

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

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

 
pylint */*.py --disable=missing-docstring
    
9
2016-09-15 08:08:10Z

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

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

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

 
pip install flake8_docstrings

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

    
8
2018-09-04 06:06:42Z

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

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

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

    
6
2016-11-23 03:34:04Z
  1. 谢谢。我刚刚发现即使单引号也可以工作
    2017-09-28 02:43:01Z
  2. 好吧它仍然很烦人,例如,如果你在Django项目上工作,它会创建一堆模块文件,你必须进入每一个模块文件。最好只显示错误消息,而不是使用“” - 在pylint用户设置中使用--errors-only“警告
    2018-08-15 04:53:07Z
  3. 醇>
来源放置 这里