草庐IT

c++ - 是否有减少完整 Doxygen 覆盖所需的冗余注释量的技巧?

coder 2023-11-16 原文

作为记录我的 C++ 代码库的一部分,我试图获得完整的 Doxygen 覆盖——也就是说,我希望我的所有(数百个)头文件对其所有公共(public) API 都有格式良好的 Doxygen 注释,这样我就可以在代码库上运行 Doxygen 而不会看到任何“警告:blah 未记录”警告。

一般来说,这只是浏览和记录内容的问题,但我注意到我一直在为每个类(class)一遍又一遍地输入相同的文本。例如,我有很多这样的实例:

/** 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”种类的评论来使我的头文件变得杂乱无章,以便读者可以更轻松地找到评论提供真正的洞察力。

最佳答案

复制文档有几个命令:

\copydoc \copybrief \copydetails

Doxygen 帮助建议使用以下语法:

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

这允许您将文档从一个类复制到另一个类。有时我会生成一个只有文档的类,它没有被编译为从项目的其余部分提取文档的标准位置。

关于c++ - 是否有减少完整 Doxygen 覆盖所需的冗余注释量的技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888857/

有关c++ - 是否有减少完整 Doxygen 覆盖所需的冗余注释量的技巧?的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  3. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  4. ruby - 检查数组是否在增加 - 2

    这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife

  5. ruby - 无法覆盖 irb 中的 to_s - 2

    我在pry中定义了一个函数:to_s,但我无法调用它。这个方法去哪里了,怎么调用?pry(main)>defto_spry(main)*'hello'pry(main)*endpry(main)>to_s=>"main"我的ruby版本是2.1.2看了一些答案和搜索后,我认为我得到了正确的答案:这个方法用在什么地方?在irb或pry中定义方法时,会转到Object.instance_methods[1]pry(main)>defto_s[1]pry(main)*'hello'[1]pry(main)*end=>:to_s[2]pry(main)>defhello[2]pry(main)

  6. ruby - 检查字符串是否包含散列中的任何键并返回它包含的键的值 - 2

    我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案

  7. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

  8. ruby - 检查日期是否在过去 7 天内 - 2

    我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/

  9. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  10. ruby - 覆盖相似的方法,更短的语法 - 2

    在Ruby类中,我重写了三个方法,并且在每个方法中,我基本上做同样的事情:classExampleClassdefconfirmation_required?is_allowed&&superenddefpostpone_email_change?is_allowed&&superenddefreconfirmation_required?is_allowed&&superendend有更简洁的语法吗?如何缩短代码? 最佳答案 如何使用别名?classExampleClassdefconfirmation_required?is_a

随机推荐