如何通过Doxygen的ExportInterface组自动生成PlantUML接口图?
如何通过Doxygen组自动生成PlantUML接口图
可以通过调整Doxygen配置和文档注释,基于已有的ExportInterface组自动生成PlantUML接口图,无需手动编写每个函数签名。以下是具体实现步骤:
1. 调整Doxygen配置,启用内嵌PlantUML代码渲染
修改你的Doxyfile中的ALIASES配置,替换原有的startuml和enduml别名,让Doxygen直接处理内嵌的PlantUML代码:
ALIASES = "project=\par Project: \n" \ "subsystem=\par Subsystem: \n" \ "history=\par History: \n\htmlonly <pre>" \ endhistory=</pre>\endhtmlonly \ "startuml=@startuml" \ "enduml=@enduml" \ "xrefreq{2}=@ref \1 \"\1\" @anchor \1 <a href='\2' target='_blank'>Requirements Object Link</a>\n" \ "satisfyreq{2}=@xrefitem satisfy \"Satisfies requirement\" \"Requirement Satisfaction\" @xrefreq{\1,\2}" \ "verifyreq{2}=@xrefitem verify \"Verifies requirement\" \"Requirement Verification\" @xrefreq{\1,\2}" \ "xrefarc{2}=@ref \1 \"\1\" @anchor \1 <a href='\2' target='_blank'>Containing Rhapsody Model</a>\n" \ "xrefarc_path{3}=@ref \1 \"\2\" @anchor \1 <a href='\3' target='_blank'>Containing Rhapsody Model</a>\n" \ "tracearc{2}=@xrefitem architecture \"Architecture\" \"Traced Architecture\" @xrefarc{\1,\2}" \ "tracearc_path{3}=@xrefitem architecture \"Architecture\" \"Traced Architecture\" @xrefarc{\1,\2,\3}" \ "startTraceIt{1}=<B>\anchor \1\nTraceIt data: \1</B><PRE>" \ endTraceIt=</PRE> \ "reftrace{1}=@anchor ref_\1 @ref \1" \ "reftrace{2}=@anchor ref\1_\2 @ref \2"
确保PLANTUML_JAR_PATH已正确配置(你的配置中已设置此路径),可额外添加PLANTUML_INCLUDE_PATH = .指定PlantUML文件搜索路径。
2. 在Doxygen组中插入自动生成接口图的注释
在定义ExportInterface组的位置(头文件或单独的.dox文档),添加以下注释:
/** * @defgroup ExportInterface 导出接口 * @{ * @startuml * interface "ExportInterface" as ExportInterface * { * {method} \ref ExportInterface::function1 * {method} \ref ExportInterface::function2 * {method} \ref ExportInterface::function3 * } * @enduml * * 这里可以添加组的详细描述... * @} */
说明:
- 使用
\ref命令引用组内的每个函数,Doxygen会自动解析函数签名并在PlantUML图中显示。 - 你的配置中
EXTRACT_ALL=YES,所有被纳入ExportInterface组的函数都会被Doxygen提取,无需额外注释。
3. 可选:利用Doxygen内置UML图替代PlantUML
如果不需要严格使用PlantUML格式,Doxygen可基于Dot生成UML风格的组图,只需在Doxyfile中添加:
GROUP_GRAPHS = YES
启用后,Doxygen会自动为ExportInterface组生成包含所有成员的UML图,无需编写任何PlantUML代码,风格与PlantUML接近。
注意事项
- 确保
ExportInterface组已通过@ingroup ExportInterface正确包含所有需要展示的接口函数。 - 若需隐藏私有/静态函数,可调整
EXTRACT_PRIVATE=NO、EXTRACT_STATIC=NO等配置,仅显示公共接口。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

