亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將函數簽名與文檔字符串進行比較的工具

將函數簽名與文檔字符串進行比較的工具

慕尼黑8549860 2023-07-11 14:51:23
是否有工具可以檢查文檔字符串中列出的參數是否與函數調用的簽名匹配?它應該能夠處理 numpy 風格的文檔字符串。我經常使用 R CMD CHECK,它可以發現 R 中的文檔/代碼不匹配,這非常有幫助。如果 Python 中有類似的東西那就太好了,但我還沒有找到任何東西。
查看完整描述

3 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

我剛剛創建了一個工具來實現這一目標,稱為pydoctest.

它將嘗試推斷文檔字符串中的類型(不僅僅是詞法比較)并報告參數數量、參數名稱、參數類型、返回類型之間的不匹配,(可選)如果缺少文檔字符串等則拋出錯誤。

它目前支持 google、sphinx 和 numpy 文檔字符串格式,但可以很容易地使用其他格式進行擴展。

例子:

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'>'

http://img4.sycdn.imooc.com/64acfc1e000103e805990372.jpg

查看完整回答
反對 回復 2023-07-11
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

pip install docsig

然后運行docsig .它就會為你檢查這一點

/path/to/project

-----------------------

def function(?*args) -> ?List[str]:

? ? """...


? ? :param None: ?

? ? :return: ?

? ? """


E103: parameters missing

目前還有8個錯誤


查看完整回答
反對 回復 2023-07-11
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

除了其他答案中提到的pydoctest和docsig之外,至少還有這些工具:

  • pydoclint與?pydocstyle或ruff一起使用

  • Pylint 的docparams 擴展

  • flake8-文檔字符串-完整

  • darglit2(對于大型項目來說速度慢得驚人)


查看完整回答
反對 回復 2023-07-11
  • 3 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號