2014-09-01 64 views
2

Doxygen可以用graphiz生成类图。Doxygen点。通过注释在类之间绘制链接

例如:

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

从这个代码我可以生成一个图像,其中的doxygen可以表明,一类它的其他的父。

但是有没有办法从类与类之间的手动引用的代码生成图片?

例如,当我描述DB方案和使用合同类(http://developer.android.com/training/basics/data-storage/databases.html#DefineContract)我想是这样执行不便:

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中的自定义绘图的解释。

回答

2

我能想到的最接近的是doxygen的配置文件定义扩展到内联点图的自定义命令,即

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"; 
    } 
} 

与以下别名定义:

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

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

+0

似乎是我的案例的解决方案,还有一个问题 - 是否有可能在图上创建每个类的只有一个发生?例如,在这种情况下(http://dimlix.com/screens/2014_09_d(001).png)只能得到GroupStudentEntry的一个出现? – dilix 2014-09-05 09:58:01

+0

也许不仅可以打印类的名称,而且还可以打印类似于图表中的参数:http://dimlix.com/screens/2014_09_d(002).png – dilix 2014-09-05 09:59:56