Python 如何在我的代码中找到未记录的方法?

Python 如何在我的代码中找到未记录的方法?,python,pycharm,Python,Pycharm,我正在为一个项目编写文档,我想确保我没有错过任何方法。代码是用Python编写的,我使用PyCharm作为IDE 基本上,我需要一个正则表达式来匹配以下内容: def method_name(with, parameters): someVar = something() ... 但它不应该匹配: def method_name(with, parameters): """ The doc string """ ... 我尝试使用PyCharm的带正则表达式的

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

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

def method_name(with, parameters):
    someVar = something()
    ...
但它不应该匹配:

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

我尝试使用PyCharm的带正则表达式的搜索功能,模式为
):\s*[^”]
,这样它就可以匹配
之后的任何一行,这些行在空格之后不以
开头,但不起作用。你知道为什么吗?

你提到你在使用PyCharm:有一个检查“缺少、空或不正确的docstring”,你可以启用它,并将为你执行

请注意,然后可以更改严重性,使其或多或少突出显示


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

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

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


快速解释一下这个正则表达式匹配的内容:它寻找一个右括号,后跟一个分号。后面可以有任意数量的可选空格。然后应该有一个新行,后跟任意数量的空格(在本例中是缩进)。最后,必须有一个单引号或双引号。请注意,这与有注释的函数相匹配。您可能希望将其倒置以查找没有注释的函数。

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

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

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

如果没有丢失的docstring,
check
函数返回
True

有一个工具,用于检查所有类、函数等是否具有正确格式的docstring

自述文件中的示例:

$ 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可以,例如,使用集成在Vim中。

是一个特殊字符,使用
\)
。示例:您不能通过访问
\uDoc\uuuuuu
来做一些更可靠的事情吗?标准库中有一些模块可以处理python语言(标记器、语法树…)。为什么要使用正则表达式?请注意,您可以在以后分配文档。`method\u name.\uu doc\uu='documentation for method\u name'。我建议不要使用正则表达式,而是通过Pylint运行您的代码,它可以检测何时缺少docstring。谢谢。对于仅获取我在前面添加了def的方法,如:
def[a-z\(\),=*]*\):\s*\n\s*[a-z\n]
这就可以了。这很有用,谢谢。但它有点太笼统了。我可以通过使用“代码>按名称运行检查”来报告缺少的文档,但它也报告了类、模块、缺少的参数等,这对我想要的自动化有用太多了。 > import ckdoc, main > ckdoc.check(main) /tmp/main.py module main function main /tmp/custom_exception.py type CustomException function CustomException.__str__ False
$ 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)