2014-09-01 66 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