doxygen–自动生成文档工具

原文地址:doxygen–自动生成文档工具 – 无敌牛

欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等

简介

doxygen是软件开发中广泛使用的文档生成工具。它可以从源代码注释中自动生成文档,解析类、函数、参数相关信息,并生成 HTML 和 PDF 格式的文档。doxygen 简化了并且标准化了文档生成过程,可以实现跨编程语言和项目来维护管理项目,增强编码协助能力。

官方地址:https://www.doxygen.nl/index.html

示例

拿一个小的开源项目 libucl 做一个测试,libucl的源代码在:GitHub - vstakhov/libucl: Universal configuration library parser

获取代码:git clone https://github.com/vstakhov/libucl.git

生成 doxygen 的配置文件:doxygen -g 。默认在当前目录下生成 Doxyfile 文件。

对文件中的输入和输出配置做个修改

INPUT = src

OUTPUT_DIRECTORY = docs

执行:doxygen 生成文档

进入目录查看生成的文档

搭建简单的网站,查看文档。

可以使用 python3 的 http.server 模块

访问刚搭建的网站,随便点点。

注释简单说明

doxygen支持 C/C++/golang/C#/Java/PHP/Python/Ruby 等很多语言,需要在代码中规范化编写注释就可以实现自动生成文档

C/C++

函数/方法
/**
 * 简短描述。
 *
 * 更详细的描述...
 *
 * @param param1 参数1的说明。
 * @param param2 参数2的说明。
 * @return 返回值的说明。
 */
void myFunction(int param1, float param2);

类/结构体
/**
 * 类的简短描述。
 *
 * 更详细的描述...
 */
class MyClass {
public:
    /**
     * 构造函数的简短描述。
     */
    MyClass();
};

成员变量
/// 简短描述。
int myVariable;

python

模块及注释
"""
Module-level brief description.

This module provides functionality for ...
"""

# Alternatively, you can use single-line comments with specific tags:
# @file my_module.py
# @brief Module-level brief description.

函数/方法
def my_function(param1, param2):
    """
    简短描述。

    更详细的描述...

    :param param1: 参数1的说明。
    :param param2: 参数2的说明。
    :returns: 返回值的说明。
    """
    pass

还需要在 doxygen 的配置文件中设置对 Python 的支持
INPUT                  = ./your-python-source-directory/
FILE_PATTERNS          = *.py
OPTIMIZE_OUTPUT_PYTHON = YES  # Optimize output for Python syntax
EXTRACT_ALL            = YES  # Extract all symbols, not just those with documentation comments

golang

函数/方法
// Short description of the function.
//
// Detailed description of the function, if needed.
// 
// @param param1 Description of the first parameter.
// @param param2 Description of the second parameter.
// @return Description of the return value.
func myFunction(param1 int, param2 string) (int, error) {
    // Function implementation...
}

类型定义(结构体)
// MyStruct is a brief description of the struct.
type MyStruct struct {
    // Field1 is a brief description of this field.
    Field1 int

    // Field2 is a brief description of this field.
    Field2 string
}

使用标记

Doxygen 提供了大量的标记来描述不同的元素,例如参数、返回值、作者等。一些常用的标记包括:

  • @param 或 \param:描述函数或方法的参数。
  • @return 或 \return:描述函数或方法的返回值。
  • @brief 或 \brief:提供一个简短的描述。
  • @see 或 \see:引用其他函数、类或文件。
  • @author 或 \author:指定代码的作者。
  • @file 或 \file:为整个文件添加描述。
  • @warning 或 \warning:给出警告信息。
  • @note 或 \note:提供额外的注意事项。
  • @deprecated 或 \deprecated:标识已废弃的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936587.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch04-高级操作

零、文章目录 ElasticSearch04-高级操作 1、文档添加 (1)生成文档ID 不指定 ID,即自动生成ID,ID 是一行数据的唯一键。语法:POST /index/_doc # 创建索引 PUT testid# 默认情况下自动生成ID POST /testid/_doc {&…

【GitHub分享】you-get项目

【GitHub分享】you-get 一、介绍二、安装教程三、使用教程四、配置ffmpeg五,卸载 如果大家想要更具体地操作可去开源网站查看手册,这里只是一些简单介绍,但是也够用一般,有什么问题,也可以留言。 一、介绍 you-get是一…

Polars数据聚合与旋转实战教程

在这篇博文中,我们的目标是解决数据爱好者提出的一个常见问题:如何有效地从Polars DataFrame中创建汇总视图,以便在不同时间段或类别之间轻松进行比较。我们将使用一个实际的数据集示例来探索实现这一目标的各种方法。 Polars简介 Polars 是…

ECharts柱状图-柱图2,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供…

Oracle进行exp导出密码中有特殊字符报EXP-00056和ORA-12154错处理

今天,业务人员反馈,在本地进行exp导出时报错,报错内容如下: 在Oracle密码中有特殊字符时,需要加引号,但引号怎么加呢?总结如下: 1、在windows系统中 exp 用户名/“““密码”””n…

解决没法docker pull问题

没想到国内源死差不多了,以下内容需要提前科学上网 su cd /etc/systemd/system/docker.service.d vim proxy.conf 参照下图修改,代理服务器改成你自己的。 ​​[Service] Environment"HTTP_PROXYsocks5://192.168.176.180:10810" Environment&…

LeNet-5:深度学习与卷积神经网络的里程碑

目录 ​编辑 引言 LeNet-5的结构与原理 输入层 C1层:卷积层 S2层:池化层 C3层:卷积层 S4层:池化层 C5层:卷积层 F6层:全连接层 输出层 LeNet-5的算法基础 LeNet-5的优点 LeNet-5的现代应用 …

JavaFX使用jfoenix的UI控件

jfoenix还是一个不错的样式,推荐使用,而且也可以支持scene builder中的拖拖拽拽 需要注意的是过高的javafx版本可能会使得某些样式或控件无法使用 比如alert控件,亲测javaFX 19版本可以正常使用 1.在pom.xml中引入依赖 GitHub地址https://gi…

VMware Workstation Pro 17 下载 以及 安装 Ubuntu 20.04.6 Ubuntu 启用 root 登录

1、个人免费版本 VMware Workstation Pro 17 下载链接怎么找?直接咕咕 VMware 找到如下链接。链接如下:Workstation 和 Fusion 对个人使用完全免费,企业许可转向订阅 - VMware 中文博客 点进去链接之后你会看到如下,注意安装之后仍…

6.2 Postman接口收发包

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 接口收发包的类比1.1 获取对方地址(填写接口URL)1.2 选择快递公司(设置HTTP方法)1.3 填写快递单(设置请求头域&#…

STM32标准库学习之寄存器方法点亮LED灯

STM32C8T6最小系统开发板,点亮PC13引脚的LED灯 1.使能PC13引脚的定时器 PC13引脚为GPIOC组的第13个端口,GPIO的时钟使能定时器为RCC_APB2ENR,这是可以从手册中得出的,如下图所示 从下图可以得出,若要使能GPIOC端口&a…

【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 前言 随着无服务计算的兴起和大数据环境中的数据集成需求, 需要使用某些轻量级的服务,来实现一些简单操作。因此Azure Function就成了微软云上的一个必不可少的组成部分。 …

深度学习:基于MindSpore的极简风大模型微调

什么是PEFT?What is PEFT? PEFT(Parameter Efficient Fine-Tuning)是一系列让大规模预训练模型高效适应于新任务或新数据集的技术。 PEFT在保持大部分模型权重冻结,只修改或添加一小部份参数。这种方法极大得减少了计算量和存储开销&#x…

【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和 2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集 题目大意 对于一个长度为 ( N ) 的整数数列 ( A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1​,A2​,⋯,AN​ ),小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \su…

bug:uniapp运行到微信开发者工具 白屏 页面空白

1、没有报错信息 2、预览和真机调试都能正常显示,说明代码没错 3、微信开发者工具版本已经是win7能装的最高版本了,1.05版 链接 不打算回滚旧版本 4、解决:最后改调试基础库为2.25.4解决了,使用更高版本的都会报错,所…

嵌入式入门Day30

IO Day5 线程相关函数pthread_createpthread_selfpthread_exitpthread_join\pthread_detachpthread_cancelpthread_setcancelstatepthread_setcanceltype 作业 线程 线程是轻量化的进程,一个进程内可以有多个线程,至少包含一个线程(主线程&a…

Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)

目录 一、Maven项目模块化? (1)基本介绍。 (2)汽车模块化生产再聚合组装。 (3)Maven项目模块化图解。 1、maven_parent。 2、maven_pojo。 3、maven_dao。 4、maven_service。 5、maven_web。 6…

ERC论文阅读(03)--instructERC论文阅读笔记(2024-12-14)

instructERC论文阅读笔记 2024-12-14 论文题目:InstructERC: Reforming Emotion Recognition in Conversation with Multi-task Retrieval-Augmented Large Language Models 说明:以下内容纯属本人看论文及复现代码的记录,如想了解论文细节&…

《Java核心技术I》Swing用户界面组件

Swing和模型-视图-控制器设计模式 用户界面组件各个组成部分,如按钮,复选框,文本框或复杂的树控件,每个组件都有三个特征: 内容,如按钮的状态,文本域中的文本。外观,颜色&#xff0c…

ubuntu20.04+ROS Noetic 安装PX4+Mavros

文章目录 系统环境安装依赖PX4 安装老版本安装测试环境变量添加版本查看 安装MAVROS(二进制安装非源码安装)测试 OGC 地面站安装测试mavros与sitl通信参考 系统环境 ubuntu 20.04 ROS Noetic 如果系统安装了Anaconda等虚拟环境管理器,要退出…