如何让 Doxygen 忽略继承关系?

Posted

技术标签:

【中文标题】如何让 Doxygen 忽略继承关系?【英文标题】:How to get Doxygen to ignore inheritance relationship? 【发布时间】:2016-09-15 16:27:17 【问题描述】:

我试图让 Doxygen 在绘制协作图时忽略继承关系。

假设我的类定义如下所示:

class Derived : public Base

  int x;
  int y;
  int z;

现在,当我运行 Doxygen 时,我不想在生成的协作图中看到 Base 类。

乍一看,最简洁的方法似乎是在我的 Doxyfile 中使用 EXCLUDE_SYMBOLS 指令。具体来说:

EXCLUDE_SYMBOLS = Base

但是,我发现这不起作用:Base 类仍然显示在我的 Derived 协作图中。我已经在 Doxygen 1.8.61.8.11 上尝试过这个,并且使用不同的基本通配符排列(Base*、*as* 等),相同的行为。 Base 类总是出现在我的协作图中。

公平地说,我找到了两种解决方法,但它们都涉及将条件语句放入我的代码中。为了完整起见,我将两者都包括在这里:

第一种解决方法:

class Derived : 
#ifndef DOXYGEN_SHOULD_SKIP_THIS
    public Base
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

  ...

然后确保在 Doxyfile 中设置了以下两个指令:

PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
ENABLE_PREPROCESSING = YES

第二种解决方法:

class Derived : 
/// @cond DOXYGEN_IGNORE
        public Base
/// @endcond

  ...

需要明确的是,这些变通办法确实使 Doxygen 忽略了继承关系,但我不希望不必要地污染我的代码库,特别是如果有更好/更清洁的方法来实现我的目标。

我的问题是——为什么EXCLUDE_SYMBOLS 在绘制协作图时不让 Doxygen 忽略我的 Base 类?

【问题讨论】:

【参考方案1】:

如果我没记错的话,EXCLUDE_SYMBOLS 会阻止 Doxygen 为排除的符号生成文档,但它不会隐藏它们。这意味着 Doxygen 不会为您的 Base 类生成文档,但它仍会将其作为 Derived 的基类提及,就像 Derived 继承自外部库提供的类一样,库提供的类将出现在协作图中。

【讨论】:

以上是关于如何让 Doxygen 忽略继承关系?的主要内容,如果未能解决你的问题,请参考以下文章

面向对象之继承

如何在关系数据库中进行继承建模?

java中类与类之间的关系有依赖和继承,那么这两种关系哪个效率高?

如何在函数式编程中建模继承关系

第三课继承

Java 学习 day07