7

我正在为一个项目编写文档,我想确保我没有错过任何方法。代码是用 Python 编写的,我使用 PyCharm 作为 IDE。

基本上,我需要一个正则表达式来匹配以下内容:

def method_name(with, parameters):
    someVar = something()
    ...

但它不应该匹配:

def method_name(with, parameters):
    """ The doc string """
    ...

我尝试使用带有 REGEX 功能的 PyCharm 搜索和模式):\s*[^"'],这样它就可以匹配任何:不以空格开头"'之后的行,但它不起作用。知道为什么吗?

4

4 回答 4

6

您提到您正在使用 PyCharm:有一个检查“缺少、空或不正确的文档字符串”,您可以启用并将为您执行此操作。

请注意,您可以更改其严重性以或多或少地突出显示。

在此处输入图像描述

于 2013-06-21T16:08:17.323 回答
3

有一个名为pydocstyle的工具可以检查所有类、函数等是否具有正确格式化的文档字符串。

自述文件中的示例:

$ pydocstyle test.py
test.py:18 in private nested class `meta`:
        D101: Docstring missing
test.py:27 in public function `get_user`:
    D300: Use """triple double quotes""" (found '''-quotes)
test:75 in public function `init_database`:
    D201: No blank lines allowed before function docstring (found 1)

我不知道 PyCharm,但是 pydocstyle 可以,例如,使用Syntastic 插件集成到 Vim 中。

于 2017-06-30T07:40:47.873 回答
2

我不知道python,但我知道我的正则表达式。

你的正则表达式有问题。首先,正如评论所提到的,您可能必须转义右括号。其次,您不匹配函数声明之后的新行。最后,您在行首查找单引号或双引号,但行首包含空格。

我能够将您的示例文件与\):\s*\n\s*["']. 这是一个多行正则表达式。并非所有程序都能够匹配多行正则表达式。grep例如,您必须使用此方法

这个正则表达式匹配什么的快速解释:它寻找一个右括号,后跟一个分号。任何数量的可选空格都可以跟随。然后应该有一个新行,后跟任意数量的空格(在这种情况下是缩进)。最后,必须有单引号或双引号。请注意,这匹配注释的函数。你想把它倒过来找到那些没有的。

于 2013-06-21T16:16:15.997 回答
0

如果 PyCharm 不可用,有一个用Python 3.5编写的名为ckdoc的小工具。

给定一个或多个文件,它会查找没有文档字符串的模块、类和函数。它不会在导入的内置库或外部库中搜索——它只考虑与给定文件位于同一文件夹或该文件夹的子文件夹中的文件中定义的对象。

示例用法(删除一些文档字符串后)

> ckdoc/ckdoc.py "ckdoc/ckdoc.py"
 ckdoc/ckdoc.py
    模块
        文档
    功能
        Check.documentable
        anykey_defaultdict.__getitem__
        通过...分组
        取名者
    类型
        查看

有些情况下它不起作用。一种这样的情况是在将 Anaconda 与modules一起使用时。在这种情况下,一种可能的解决方法是使用ckdocPython shell。导入必要的模块,然后调用该check函数。

> 导入 ckdoc,主要
> ckdoc.check(主要)
/tmp/main.py
    模块
        主要的
    功能
        主要的
/tmp/custom_exception.py
    类型
        自定义异常
    功能
        CustomException.__str__
错误的

如果没有缺少文档字符串,则该check函数返回。True

于 2017-04-06T18:42:46.090 回答