比较功能签名和文档字符串的工具

问题描述

是否有一个工具可以检查docstring中列出的参数是否与函数调用的签名匹配?它应该能够处理numpy样式的文档字符串。 我经常使用R CMD CHECK,它在R中发现文档/代码不匹配,这非常有帮助。在Python中有类似的东西会很好,但是我还没有找到任何东西。

解决方法

我刚刚创建了一个工具来实现这一点,名为 pydoctest

它将尝试推断您的文档字符串中的类型(不仅仅是词法比较)并报告参数数量、参数名称、参数类型、返回类型之间的不匹配,如果缺少文档字符串和(可选)抛出错误和更多。

目前只支持 google docstring 格式,但可以很容易地扩展为其他格式。

示例:

def func_type_mismatch(self,a: int) -> int:
    """[summary]

    Args:
        a (float): [description]        <-- float is not int

    Returns:
        int: [description]
    """
    pass

在这个函数上运行 pydoctest,给出这个输出:

Function: <function IncorrectTestClass.func_type_mismatch at 0x7f9a8b52c8c8> FAIL | Argument type differ. Argument 'a' was expected (from signature) to have type '<class 'int'>',but has (in docs) type '<class 'float'>'

编辑(2021 年 6 月):我已经开始开发使用并突出显示错误的 vscode 扩展。 enter image description here https://marketplace.visualstudio.com/items?itemName=JeppeRask.pydoctest

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...