2017-08-25 40 views
8

作为记录我的C++代码库的一部分,我试图得到完整的Doxygen覆盖范围 - 也就是说,我希望我的所有(数百个)头文件都具有适合所有公共API的Doxygen注释,这样我就可以在代码库上运行Doxygen并且看不到任何“警告:没有记录”警告。是否有一种方法可以减少完全Doxygen覆盖所需的多余评论数量?

一般来说,这只是一个通过和记录的东西,但我已经注意到,我一直重复输入相同的文字为每个类。例如,我有本质上讲,这许多情况下:

/** The Foo class represents blah blah blah */ 
class Foo 
{ 
public: 
    /** Default constructor */ 
    Foo(); 

    /** Copy constructor 
     * @param rhs the object to make this object a copy of. 
     */ 
    Foo(const Foo & rhs); 

    /** Destructor */ 
    ~Foo(); 

    /** Equality operator. 
     * @param rhs the object to compare against. 
     * @returns true iff this object and (rhs) are equal. 
     */ 
    bool operator == (const Foo & rhs) const; 

    /** Inequality operator. 
     * @param rhs the object to compare against. 
     * @returns true iff this object and (rhs) are not equal. 
     */ 
    bool operator != (const Foo & rhs) const; 

    /** Assignment operator 
     * @param rhs the object we should copy our state from 
     * @returns a reference to *this 
     */ 
    Foo & operator = (const Foo & rhs); 

[...] 
} 

这些意见(通常情况下)更多或更少的一模一样的每一个类,因为这些功能/经营者几乎总是工作完全针对每个相同的方式类。事实上,让操作员或复制构造函数以某种其他方式行事将是一个值得怀疑的设计模式,因为C++程序员通常希望操作员对每个类都以相同的方式工作。

我的问题是,是否有一些技巧可以让我告诉Doxygen为这些事情自动生成合理的文档(例如通过某种模板或宏),而无需一次又一次手动输入此文本?这将大大减少我必须输入和维护的文本数量,并且还可以通过允许我删除“no duh”变体的注释以便读者更容易地查找注释,从而使头文件变得混乱提供真正的洞察力。

+0

我正在写一个相当大的类库。我已经写了一个简短的脚本,为我的大多数类使用通用设计模式发布机器人生成的骨架代码。包括Doxygen评论,以及我手动修复搜索/替换的几个关键字。我也找不到更好的方法。 –

+0

@JeremyFriesner:“*警告:blah没有记录*”您是否考虑关闭这些警告?特别是围绕参数和返回类型;没有理由记录它们。 –

+0

@NicolBolas对于其他(更有趣的)功能和方法,经常有理由记录它们。如果我只能关闭某些类别的成员的警告,那会很有用,但我认为我没有那种控制力。 –

回答

1

有复印文档几个命令:

\copydoc \copybrief \copydetails

Doxygen的帮助提示的语法如下:

/*! @copydoc MyClass::myfunction() 
* More documentation. 
*/ 

这可以让你从一个类复制到另一个文件。有时候,我会生成一个仅供文档使用的类,它不会被编译为标准地点,以便在项目的其余部分中绘制文档。

+0

有意思 - 你是否在每个赋值/比较运算符,复制构造函数,默认构造函数等的声明上面添加一条@copydoc行? –

+0

是的,这是我的班级模板的一部分。 –

相关问题