Doxygen点。通过注释在类之间绘制链接

时间:2014-09-01 17:07:21

标签: java javadoc doxygen graphviz dot

Doxygen可以使用graphiz生成类图。

例如:

class A {...};
class B extends A {...};

从这段代码我可以生成一张图片,其中doxygen可以显示一个类是另一个类的父级。

但有没有办法从代码中生成一个图片,并在类之间进行手动引用?

例如,当我描述数据库方案并使用合同类(http://developer.android.com/training/basics/data-storage/databases.html#DefineContract)时,我想像这样执行smth:

class MainClass {
    class A {
        String COLUMN_ID = "id_a";
    }

    /**
     * {@dotlinkto MainClass.A}
    **/
    @OrAnotationToDrawLink(A.class)
    class B {
        String COLUMN_ID = "id_b";
        String COLUMN_FOREIGN_KEY_TO_A = "id_a_key";
    }
}

并生成2个A类和B类的图片,并在它们之间引用。

我试图搜索文档,但在javadoc + doxygen + graphviz中找不到任何合适的自定义绘图示例或解释。

1 个答案:

答案 0 :(得分:2)

我能想到的最接近的事情是定义一个扩展为内联点图的自定义命令,即

class MainClass {
  public class A {
    String COLUMN_ID = "id_a";
  }

  /**
   * @dotlinkbetween{A,B}
   * @cond
   **/
   @OrAnotationToDrawLink(A.class)
  /** @endcond */
   public class B {
      String COLUMN_ID = "id_b";
      String COLUMN_FOREIGN_KEY_TO_A = "id_a_key";
    }
}

在doxygen的配置文件中使用以下ALIAS定义:

ALIASES = dotlinkbetween{2}="@dot digraph { node [shape=record ]; \1 [ URL=\"\ref \1\" ]; \2 [ URL=\"\ref \2\" ]; \2 -> \1; } @enddot"

请注意,我必须使用@cond ... @endcond让doxygen跳过@OrAnotationToDrawLink行。