我试图设置自动化Doxygen运行在我们庞大的78,000文件C++代码库上。提取基本类型和层次结构信息并没有问题,但我希望能够更加明智地提取已经存在的文档注释。制作Doxygen阅读双斜杠C++评论作为标记
多年来积累的大部分意见都遵循一般模式,尽管不是Doxygen预期的模式。他们大多看起来像
// class description
class foo
{
// returns ascii art of a fruit
const char* apples(void);
// does something to some other thing
customtype_t baz(foo &other);
enum
{
kBADGER, // an omnivorous mustelid
kMUSHROOM, // tasty on pizza
kSNAKE, // oh no!
};
}
哪些是双削减,而不是///
或//!
风格评论说Doxygen的期望。
有太多的文件需要通过搜索和替换所有这些注释,而且我的许多程序员对他们的代码中看到三重斜杠有过度的过敏,所以我想找一些方法让Doxygen读取作为JavaDoc评论的普通评论,当他们在正确的地方。 有没有办法让Doxygen读//
为///
?
我找不到任何这样的配置参数,所以我想我需要以某种方式转换输入。总的来说,我会使用的规则是:
- 如果仅包含 评论线,立即 函数/类/类型/可变 声明之前,假设它是一个
///
评论。 - 如果有声明 由
//
评论随后在同一行,把它当作一个///<
但我不知道如何去教Doxygen的这条规则。两种方式我能想到的是:
- 写程序作为INPUT_FILTER,其分析输入C++和如上述变换
//
s转换///
秒。但是这种转换对于正则表达式来说太复杂了,我真的不想编写一个完整的C++解析器来将输入提供给另一个C++解析器!另外,为每个文件启动一个INPUT_FILTER程序会让Doxygen变得不可接受:它已经超过30分钟才能运行我们的源代码,并且添加一个INPUT_FILTER会花费六个多小时。 - 修改Doxygen源代码以包含上述评论规则。这似乎是在陌生的代码中可怕的工作量。
还有其他想法吗?
如何在一次运行目录的小脚本中寻找代码中的'//'(带空格)并将其转换为'///'?另外,如果你的编码器对'///'过敏,告诉他们从药房拿到东西。 – Xeo
您可以修改doxygen的解析器,以便在某些地方使用“//”替代“///”。毕竟,Doxygen是开源的。从常见问题解答:'这可能不难调整src/scanner.l – rve
@Xeo如果我实际签出,修改和检查78000文件只是为了将评论修改为无人喜欢的格式,我会在午餐前被解雇。 – Crashworks