

从Python源码注释,自动生成API文档
source link: https://segmentfault.com/a/1190000040801843
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

从Python源码注释,自动生成API文档
用python写了一个屏幕自动控制的开源小项目
,需要编写文档,这可能是程序员最痛苦的工作了,哈哈。
为了尽量减少工作量,API调用部分最好能直接用源码注释生成——这样至少不用写两遍了,而且注释离源码最近,相互对照写起来方便。
摸索了一下生成工具,发现还不是那么简单。目前成熟可用的有三个:
- Pydocs:python环境自带,但是有点过于简单,只能一个个指定文件/类/模块来生成文档,生成的内容缺省输出到控制台,还得重定向到文件,优势是原生支持Markdown。当然另外两个工具又过于复杂了点,没有找到类似JavaDoc那样平衡的工具
- Sphinx:老牌文档生成工具,和下面的MkDocs一样,都是完整的文档组织管理工具,可以生成Html文档,全套文档要当做一个项目来管理。如果要从源码注释生成文档,需要安装autodoc等扩展。Sphinx最大的缺点在于要使用一种叫做reStructuredText(.rst文件)的文档格式,很是别扭。详见使用 Sphinx 为项目自动生成 API 文档
- MkDocs:相对新的文档管理工具,通过Markdown格式来组织文档,安装插件Mkdocstrings以后,也支持从源码注释生成md文件。网上也有比较详细的教程,本文主要补充一点踩过的坑。
首先呢,MkDocs是把文档当成项目来管理的,我们编写的markdown文件,相当于“文档源码”,会被它“编译”成Html(支持多种风格),而Mkdocstrings这个插件,是从python源码中提取注释,生成mk格式的“文档源码”。
刚接触的时候,我们可能会犹豫:这个项目和原本的python项目是什么关系呢?其实除了要提取注释,两个项目没关系。大可以放心地在原python项目里建一个目录,用 mkdocs new
指令新建一个文档项目。
新建项目以后,mkdocs会在指定目录下,生成一个yaml格式的配置文件,再新建一个docs目录,作为“文档源码”所在位置,并且生成一个名为index.md的缺省文档。
为了支持注释生成文档,需要pip安装mkdocstrings,然修改mkdocs.yml配置文件,启用这个插件
plugins: - mkdocstrings
然后在自己的md文件里(或者生成的index.md,取决于想在哪里生成)用特殊格式引入python源码的模块名,例如:
## generated ::: autopy # autopy是模块名,可以写多级,比如autopy.core.data这样,前面的三个冒号,表示这里需要调用mkdocstrings来生成
之后命令行调用 mkdocs build
,会生成相应的html文件,或者调用 mkdocs serve
启动一个本地http服务器,通过浏览器来预览。此时可能会报错:提示找不到指定的模块,这很可能是python源码没有加入系统路径造成的。
我们当然可以把源码路径直接加到PATHONPATH环境变量中,但这样会有影响其他程序的副作用,而且还得按绝对路径加,不够灵活。好在mkdocstrings配置够强大,支持动态代码,此时可以补充mkdocs.yml文件里补充handlers:
plugins: - mkdocstrings handlers: python: setup_commands: - import sys - sys.path.insert(0, "..")
这里等于告诉mkdocstring,提取注释前,先执行setup_commands中的语句,通过sys.path.insert,把父目录添加进来(我们前面是在python源码目录下,新建了文档项目,所以对文档项目来说,源码就是父目录)。
再次执行mkdocs serve
,就会发现生成的html文档中,::: autopy
这部分,已经被代码中的注释替换掉了。
注意:Mkdocs要求代码注释符合谷歌规范。
Recommend
-
44
使用IDEA时,自动生成的类注释中的用户名默认为操作系统当前的用户名。这样的用户名通常和实际要用的用户名是不一致的。 已知的有两种调整方式。 第一种方式在File -> Settings -> Editor -> File and Code Te...
-
10
-
11
-
5
为了解决接口复用的问题,建议使用规范,从而能够让Java自动生成相关文档,有助于以后代码的二次开发。 主要分为两部分 第一部分是如何利用ide帮助我们为方法、为类自动生成一套标准模板; 第二部分是如何使用ide生成JavaDoc...
-
8
如何利用showdoc自动生成API文档 showdoc是一个适合IT团队的文档工具,阅读本文前需要对showdoc有基本了解 。基本介绍可看:http...
-
2
百篇博客分析.深挖内核地基 给鸿蒙内核源码加注释过程中,整理出以下文章。内容立足源码,常以生活场景打比方尽可能多的将内核知识点置入某种场景,具有画面感,容易理解记忆。说别人能听得懂的话很重要! 百篇博客绝不是百度教条式的在说一堆诘屈聱牙...
-
7
golang 自动生成函数注释插件 Goanno 是 goland 的一个插件,这个插件为 golang 提供了自动生成注释的功能。 How to install goland 插件市场(搜索 Goanno) 下载 release jar(goland install fr...
-
1
本文转载自: https://razeencheng.com/post/go-swagger.html 相信很多程序猿和我一样不喜欢写API文档。写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全。但API文档是...
-
9
什么是swagger?Swagger是一个简单但功能强大的API表达工具。它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swagger。使用...
-
11
Go将Gin整合Swagger自动生成API文档学习笔记 下载可执行文件go install github.com/swaggo/swag/cmd/[email protected] 在项目中下载依赖go get github.co...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK