API文档自动生成工具
一、参考资料
从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配置文件,整个项目的配置文件,可以配置插件、主题、项目名称、中英文等。Makefile和make.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文档,内容如下:
## 简介
## 测试图片


4.5 在主目录中添加md文件目录
在 index.rst中修改如下:
.. toctree:::maxdepth: 2test/test
5. 编译
在项目根目录下执行如下命令转为html
# 需要注意windows是bat文件
make html
注意事项
-
关于图片的引用,sphinx会自动将图片文件移动到_images文件夹下,不同文件夹下的图片都会移动到这个文件夹下,图片名称不建议使用
中文名称,会导致无法正常移动图片。 -
关于图片不同文件夹下名称相同,移动后会将同名的文件进行重命名,添加序号之类的,因此不会影响实际显示效果。
-
关于部分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生成小而美的文档
相关文章:
API文档自动生成工具
一、参考资料 从Python源码注释,自动生成API文档 二、问题引入 不管是开源还是闭源,要让所有人都能读懂你的代码这太难了,所以文档是很重要的。大部分情况,我们不希望维护一份代码再加上一份文档,这样做很容易造成文…...
7、MyBatis框架——MyBatis对一对一关系的处理、分步查询、MyBatis对一对多关系的处理
目录 一、项目框架搭建 二、在实体类中添加额外属性实现多表查询 1、mybatis两表关联查询 (1)实体类类型映射规则 (2)代码演示 2、分步查询 (1)autoMapping开启自动映射 (2)…...
电商数据监测——中国白酒行业数据浅析
大国盛世酿,万家潭酒香。中国白酒是中国特色文化之一。 2022年,国内白酒总产量为671.2万千升,处于持续下滑的态势。 白酒产量不佳,但线上平台的销售情况却成绩优异。2022年,京东平台白酒的年度总销量超3500万件,同比去…...
excel数据技巧:透视表快速统计年终业绩排名
年关了,各种数据多得要命,要汇总,要排名,这样才好颁奖发红包。今天,数据透视表出来为Excel人送温暖了,不用分两步做,鼠标拖两下,同步搞定业绩统计与排名。临近年末,各行各…...
TensorRT的Python接口解析
TensorRT的Python接口解析 文章目录TensorRT的Python接口解析4.1. The Build Phase4.1.1. Creating a Network Definition in Python4.1.2. Importing a Model using the ONNX Parser4.1.3. Building an Engine4.2. Deserializing a Plan4.3. Performing Inference点此链接加入…...
【信管11.5】合同、采购、招投标相关法规
合同、采购、招投标相关法规关于法律法规相关的内容,其实并没什么可以多说的,我也只是列出来,大家挑着背吧。当然,这里也不都是完完全全的法律条文,有一些也可能是一些归纳总结。更具体的内容大家可以参考教材以及查阅…...
使用 CSS 变量更改多个元素样式
使用 CSS 变量更改多个元素样式 var() 函数用于插入自定义的属性值,如果一个属性值在多处被使用,该方法就很有用。 custom-property-name 是必需的, 自定义属性的名称,必需以 – 开头。 value 可选。备用值,在属性不存在的时候使…...
面试题(二十五)设计模式
1. 设计模式 1.1 说一说设计模式的六大原则 参考答案 单一职责原则 一个类,应当只有一个引起它变化的原因;即一个类应该只有一个职责。 就一个类而言,应该只专注于做一件事和仅有一个引起变化的原因,这就是所谓的单一职责原则…...
使用红黑树模拟实现map和set
在STL的源代码中,map和set的底层原理都是红黑树。但这颗红黑树跟我们单独写的红黑树不一样,它需要改造一下: 改造红黑树 节点的定义 因为map和set的底层都是红黑树。而且map是拥有键值对pair<K,V>的,而set是没有键值对&a…...
【django项目开发】用户登录后缓存权限到redis中(十)
这里写目录标题一、权限的数据的特点二、首先settings.py文件中配置redis连接redis数据库一、权限的数据的特点 需要去数据库中频繁的读和写,为了项目提高运行效率,可以把用户的权限在每次登录的时候都缓存到redis中。这样的话,权限判断的中…...
算法总结c++
文章目录基本概念时间复杂度空间复杂度基本结构1. 数组前缀和差分数组快慢指针(索引)左右指针(索引)盛水容器三数之和最长回文子串2. 链表双指针删除链表的倒数第 n 个结点翻转链表递归将两个升序链表合并为一个新的 升序 链表链表翻转3. 散列表twoSum无…...
Python 之 NumPy 切片索引和广播机制
文章目录一、切片和索引1. 一维数组2. 二维数组二、索引的高级操作1. 整数数组索引2. 布尔数组索引三、广播机制1. 广播机制规则2. 对于广播规则另一种简单理解一、切片和索引 ndarray 对象的内容可以通过索引或切片来访问和修改(),与 Pytho…...
Redis【包括Redis 的安装+本地远程连接】
Redis 一、为什么要用缓存? 缓存定义 缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据。 程序中的缓存 在我们程序中,如果没有使用缓存,程序的调用流程是直接访问数据库的; 如果多个程序调用一个数…...
深度学习训练营_第P3周_天气识别
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:Pytorch实战 | 第P3周:彩色图片识别:天气识别**🍖 原作者:K同学啊|接辅导、项目定制**␀ 本次实验有两个新增任务&…...
“华为杯”研究生数学建模竞赛2006年-【华为杯】C题:维修线性流量阀时的内筒设计问题(附获奖论文及matlab代码)
赛题描述 油田采油用的油井都是先用钻机钻几千米深的孔后,再利用固井机向四周的孔壁喷射水泥砂浆得到水泥井管后形成的。固井机上用来控制砂浆流量的阀是影响水泥井管质量的关键部件,但也会因磨损而损坏。目前我国还不能生产完整的阀体,固井机仍依赖进口。由于损坏的内筒已…...
数据结构:带环单链表基础OJ练习笔记(leetcode142. 环形链表 II)(leetcode三题大串烧)
目录 一.前言 二.leetcode160. 相交链表 1.问题描述 2.问题分析与求解 三.leetcode141. 环形链表 1.问题描述 2.代码思路 3.证明分析 下一题会用到的重要小结论: 四.leetcode142. 环形链表 II 1.问题描述 2.问题分析与求解 Judgecycle接口…...
数模美赛如何找数据 | 2023年美赛数学建模必备数据库
2023美赛资料分享/思路答疑群:322297051 欧美相关统计数据(一般美赛这里比较多) 1、http://www.census.gov/ 美国统计局(统计调查局或普查局)官方网站 The Census Bureau Web Site provides on-line access to our …...
SSTI漏洞原理及渗透测试
模板引擎(Web开发中) 是为了使 用户界面 和 业务数据(内容)分离而产生的,它可以生成特定格式的文档, 利用模板引擎来生成前端的HTML代码,模板引擎会提供一套生成HTML代码的程序,之后…...
【算法基础】高精度除法
👦个人主页:Weraphael ✍🏻作者简介:目前是C语言 算法学习者 ✈️专栏:【C/C】算法 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬…...
optimizer.zero_grad(), loss.backward(), optimizer.step()的理解及使用
optimizer.zero_grad,loss.backward,optimizer.step用法介绍optimizer.zero_grad():loss.backward():optimizer.step():用法介绍 这三个函数的作用是将梯度归零(optimizer.zero_grad())&#x…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
