我正在为一个项目编写文档,我想确保我没有错过任何方法。代码是用Python编写的,我使用PyCharm作为IDE。
基本上,我需要一个REGEX来匹配类似的东西:
def method_name(with, parameters):
someVar = something()
...
但不应该匹配:
def method_name(with, parameters):
""" The doc string """
...
我尝试使用带有REGEX功能的PyCharm搜索和模式):\s*[^"']
,因此它会匹配:
后面的"
或'
之后的任何行。 ,但它不起作用。知道为什么吗?
答案 0 :(得分:4)
您提到您使用的是PyCharm:您可以启用检查“缺失,空或不正确的文档字符串”并将为您执行此操作。
请注意,您可以更改其严重程度,以显示更多或更少的显示。
答案 1 :(得分:2)
我不懂python,但我知道我的正则表达式。
你的正则表达式有问题。首先,正如评论所提到的,您可能必须逃避右括号。其次,您不匹配函数声明后面的新行。最后,您在行的START处查找单引号或双引号,但行的开头包含空格。
我能够将您的示例文件与\):\s*\n\s*["']
匹配。这是一个多行正则表达式。并非所有程序都能匹配多行正则表达式。例如,使用grep
,您必须使用this method。
快速解释这个正则表达式匹配的内容:它查找一个右括号后跟一个分号。任何数量的可选空格都可以遵循。然后应该有一个新行后跟任意数量的空格(在这种情况下是缩进)。最后,必须有单引号或双引号。请注意,这与做具有注释的功能相匹配。你想要反转它来找到没有的那些。
答案 2 :(得分:1)
有一个名为pydocstyle的工具可以检查所有类,函数等是否都有正确格式化的文档字符串。
自述文件中的示例:
{{1}}
我不了解PyCharm,但是pydocstyle可以使用Syntastic plugin集成到Vim中。
答案 3 :(得分:0)
如果PyCharm不可用,可以使用 Python 3.5 编写一个名为ckdoc的小工具。
给定一个或多个文件,它找到没有docstring的模块,类和函数。它不会在导入的内置库或外部库中进行搜索 - 它只会考虑与驻留在与给定文件相同的文件夹中的文件中定义的对象,或者该文件夹的子文件夹。
使用示例(删除一些文档字符串后)
> ckdoc/ckdoc.py "ckdoc/ckdoc.py" ckdoc/ckdoc.py module ckdoc function Check.documentable anykey_defaultdict.__getitem__ group_by namegetter type Check
有些情况不起作用。其中一个例子是使用带有modules的Anaconda。在这种情况下,可能的解决方法是使用Python shell中的ckdoc
。导入必要的模块,然后调用check
函数。
> import ckdoc, main > ckdoc.check(main) /tmp/main.py module main function main /tmp/custom_exception.py type CustomException function CustomException.__str__ False
如果没有遗漏的文档字符串,check
函数将返回True
。