【发布时间】:2018-02-03 22:39:39
【问题描述】:
作为记录我的 C++ 代码库的一部分,我试图获得完整的 Doxygen 覆盖——也就是说,我希望我的所有(数百个)头文件都为它们的所有公共 API 提供格式良好的 Doxygen cmets ,这样我就可以在代码库上运行 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);
[...]
}
这些 cmets(通常)对于每个类都或多或少完全相同,因为这些函数/运算符对于每个类几乎总是以完全相同的方式工作。事实上,让操作符或复制构造函数以其他方式运行将是一个值得怀疑的设计模式,因为 C++ 程序员通常希望操作符对每个类都以相同的方式工作。
我的问题是,是否有一些技巧可以告诉 Doxygen 为这些东西自动生成合理的文档(例如,通过某种模板或宏),而不必一遍又一遍地手动输入此文本?这将大大减少我必须输入和维护的文本数量,并且还可以通过允许我删除“no duh”类型的 cmets 来整理我的头文件,以便读者可以更轻松地找到 cmets提供真正的洞察力。
【问题讨论】:
-
我正在编写一个相当大的类库。我已经开始编写一个简短的脚本,该脚本会使用我的大多数课程的通用设计模式喷出机器人生成的骨架代码。包括 Doxygen cmets,有几个关键字,我通过搜索/替换手动修复。我也找不到更好的方法。
-
@JeremyFriesner:“警告:没有记录在案”您是否考虑过关闭这些警告?尤其是围绕参数和返回类型;没有理由记录它们。
-
@NicolBolas 对于其他(更有趣的)函数和方法,通常有理由记录它们。如果我可以只针对某些类型的班级成员关闭警告,那将很有用,但我认为我没有那种程度的控制。
-
默认成员 (
= default) 是否也会出现警告。你真的需要重新实现那些成员吗?你能分解它们吗(CRTP,0 规则,...)?