API文档自动生成工具

文章介绍了如何利用Python自带的Pydocs和第三方工具Sphinx、MkDocs以及Doxygen来自动生成API文档。Sphinx需要配合reStructuredText(RST)或Markdown,通过安装相关扩展支持Markdown。Doxygen则专注于C++等语言的文档生成,但也可以处理其他语言。文章详细阐述了安装、配置和使用这些工具的步骤,强调了文档自动化对保持代码和文档同步的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、参考资料

从Python源码注释,自动生成API文档

二、问题引入

不管是开源还是闭源,要让所有人都能读懂你的代码这太难了,所以文档是很重要的。大部分情况,我们不希望维护一份代码再加上一份文档,这样做很容易造成文档和代码的不一致,程序员最讨厌更新文档了。

为了尽量减少工作量,API调用部分最好能直接用源码注释生成——这样至少不用写两遍了,而且注释离源码最近,相互对照写起来方便。

三、Pydocs

python环境自带,但是有点过于简单,只能一个个指定文件/类/模块来生成文档,生成的内容缺省输出到控制台,还得重定向到文件,优势是原生支持Markdown。

四、Sphinx

使用 Sphinx 为项目自动生成 API 文档

How-To Guides

Sphinx 使用手册

Learn reStructureText

RST 中文文档 v2.0.2

Sphinx doc官网

老牌文档生成工具,和MkDocs一样,都是完整的文档组织管理工具,可以生成Html文档,全套文档要当做一个项目来管理如果要从源码注释生成文档,需要安装autodoc等扩展。Sphinx最大的缺点在于要使用一种叫做**reStructuredText(.rst文件)**的文档格式,很别扭。

1. RST

reStructuredText (RST、ReST或reST)一种用于文本数据的文件格式,基于 Python 的 docutils 模块提供解析功能的标记语言

2. 常用指令

# 查看Sphinx版本
sphinx-build --version

3. 关键步骤

3.1 安装Sphinx

pip install sphinx
sudo apt install python3-sphinx

3.2 设置文档源目录

在同一个项目中维护代码和文档,需要在项目根目录新建一个 docs 文件夹(也可以使用其他名称),用来存放所有和文档有关的文件,我们将使用该文件夹作为 Sphinx 工作的源目录(source directory)。

mkdir docs
cd docs

# 初始化文档项目
sphinx-quickstart
docs
├── build # 存放生成的文档
│   ├── doctrees
│   └── html
├── make.bat
├── Makefile
└── source # 存放Sphinx工程源码
    ├── api_python
    ├── conf.py
    ├── index.rst
    ├── _static
    └── _templates

解释说明:

  • conf.py 配置文件,整个项目的配置文件,可以配置插件、主题、项目名称、中英文等。
  • Makefilemake.bat 编译所需脚本,在 docs 目录执行 make html 即可通过源文件生成静态网页。
  • index.rst 是文档源文件的首页,文档里有一些默认的样板内容,通常我们将其作为访问其他页面的入口目录。
  • build 文件夹下存放的是编译后产生的文件

3.3 生成文档

运行 make html 生成静态网页用于预览,生成的 HTML 页面保存在 build/html 目录。

make html

在这里插入图片描述

4. Markdown支持

python sphinx(文档生成器)入门

4.1 安装markdown支撑的模块

pip install myst-parser

4.2 安装md文档相关主题

pip install sphinx sphinx-autobuild sphinx_rtd_theme recommonmark sphinx-markdown-tables

4.3 设置插件

在conf.py文件中设置extensions字段添加md文档处理。

extensions = ["recommonmark"]

4.4 新建md文件

下面在source文件夹下新建一个子文件夹叫test, 里面存放md文档相关数据,此处新建一个test.md文档,内容如下:

## 简介
## 测试图片

![avatar](../images/test/test.gif)
![avatar](../images/test2/test.gif)
![avatar](../images/test2/test.jpg)

4.5 在主目录中添加md文件目录

在 index.rst中修改如下:

.. toctree::
   :maxdepth: 2

   test/test

5. 编译

在项目根目录下执行如下命令转为html

# 需要注意windows是bat文件
make html

注意事项

  1. 关于图片的引用,sphinx会自动将图片文件移动到_images文件夹下,不同文件夹下的图片都会移动到这个文件夹下,图片名称不建议使用中文名称,会导致无法正常移动图片

  2. 关于图片不同文件夹下名称相同,移动后会将同名的文件进行重命名,添加序号之类的,因此不会影响实际显示效果。

  3. 关于部分md文档中标题无法在目录中正常显示问题,需要在conf.py文件中添加如下配置:

    html_theme_options = {"collapse_navigation": True, "navigation_depth": 6}
    

6. 应用案例

MindSpore的教程和API文档均可由Sphinx工具生成。

五、MkDocs

MkDocs是相对新的文档管理工具,通过Markdown格式来组织文档,安装插件Mkdocstrings以后,也支持从源码注释生成md文件。

六、Doxygen

参考资料

干货|教你使用Doxygen制作漂亮的程序文档

Doxygen文档生成工具教程

文档生成神器—doxygen的使用和代码注释规范

自定义Doxygen生成小而美的文档

为了利用DeepSeek进行生辰八字的计算,通常不是直接编程实现这一过程,而是通过提供个人的具体出生信息给DeepSeek这样的平台,由它内部集成的相关算法和服务来进行解析。然而,若要创建一个程序接口或者脚本来自动化此流程,则可以考虑如下方案: 构建API请求或命令行界面来与支持生辰八字计算的服务互动。 1. 准备必要的个人信息数据集,例如出生日期、时间和地点以及性别。 2. 查阅DeepSeek提供的官方文档,寻找是否有公开的API端点用于提交这些个人信息以获取八字分析结果。 3. 如果存在相应的API,构造HTTP请求发送至指定URL,并附带所需参数。 4. 处理返回的数据,这可能包括但不限于八字排盘详情和个人命运预测等内容。 5. 解析并展示输出结果给人类用户阅读的形式。 由于具体实施细节依赖于DeepSeek的实际开发环境和支持的功能集合,下面是一个假设性的Python代码片段示例,用来演示如何向假定存在的API发出POST请求: ```python import requests import json url = "https://api.deepseek.example/bazi" # 假设这是DeepSeek八字服务的API地址 headers = {'Content-Type': 'application/json'} data = { "birth_date": "YYYY-MM-DD", # 替换成实际的生日日期 "birth_time": "HH:mm:ss", # 替换成实际的出生时间 "location": "City, Country", # 替换成具体的出生地城市和国家名 "gender": "M/F" # 性别 M代表男性 F代表女性 } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: result = response.json() print(json.dumps(result, indent=4)) # 输出漂亮的JSON格式的结果 else: print(f"Error: {response.status_code}") ``` 请注意以上代码仅为示意用途;真实情况下需参照最新的DeepSeek API文档调整URL路径和其他配置项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花花少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值