Doxygen为带继承的.hal接口生成文档时子接口未在类列表显示如何解决
问题根因
你遇到的情况是Doxygen处理IDL类继承逻辑时的两个规则共同作用导致的:
- 当前你写的
/** ... */是文件级注释,没有给interface A添加专属的接口级文档注释,Doxygen默认不会将无专属文档的派生接口加入类列表。 - 你当前配置中
OPTIMIZE_OUTPUT_JAVA = NO,IDL的接口继承语法和Java高度同源,关闭该优化会导致Doxygen对IDL继承关系的解析出现异常,直接过滤掉派生的子接口。
删除extends B后A能正常显示,是因为无继承关系时Doxygen不会触发派生元素的文档校验逻辑,只要有定义就会被提取。
解决方案
按以下步骤调整即可:
- 给接口A添加专属的文档注释块,示例如下:
/** * A.hal 文件注释 */ /** * 接口A的功能描述 */ interface A extends B { //some content }
- 修改Doxygen配置文件,调整以下参数:
- 将
OPTIMIZE_OUTPUT_JAVA改为YES,开启Java语法优化后Doxygen对IDL继承关系的解析准确率会大幅提升 - 若你希望所有定义的接口无论有没有文档都出现在类列表中,添加配置
EXTRACT_ALL = YES - 确保
HIDE_UNDOC_RELATIONS = NO(默认值为NO,如果你手动修改过该配置请改回),避免继承自无文档父接口的子接口被过滤
- 清空Doxygen之前生成的输出目录,重新执行文档生成命令,即可在类列表中同时看到A、B两个接口。
内容的提问来源于stack exchange,提问作者Anbu.Sankar
相关产品推荐
相关产品推荐

