簡體   English   中英

如何在 doxygen 中創建狀態圖?

[英]How to create a state diagram in doxygen?

使用 doxygen 我想以某種方式生成狀態圖。 doxygen 中是否有任何技巧可以幫助我們實現這一目標?

目前我只是使用預先格式化的文本,然后添加我自己的“自由文本圖”,這很難維護並且繪制出來很耗時。

我使用 doxygen 生成的所有其他圖表(即繼承、關系等),但由於狀態機不是“標准”c/c++ 構造(即 eech 設計器可以以不同的方式實現它們)我猜沒有自動告訴 doxygen 為您執行此操作的方法。 但是是否有某種圖表元素的創建,您可以在每個狀態旁邊進行評論? 也許像這個粗略的例子:

\section state Diagram
... description

\state state1...
\value1 returns state2
\value2 returns state1
int myState1Handler(){...}

\state state2...
\value1 returns state1
\value2 returns state2
int myState2Handler(){...}

編輯1:

或者,是否可以使用下面評論中建議的 graphviz 標記語言,並以某種方式將它們與 doxygen 輸出集成?

Doxygen(至少是最新版本)提供了\\dotfile\\dot特殊命令,用於插入任意.dot文件或內聯點圖描述,以使用graphviz呈現給生成的文檔。

您還可以考慮使用諸如SMC之類的工具來管理您的狀態機(通過建模,可視化表示和代碼生成)。

您可以使用 dot 腳本語言並將腳本放在 @dot 和 @enddot 之間,在 doxygen 中添加您自己的自定義圖表

我自己在我的 cpp 代碼中測試了這個例子,它與 doxygen 配合得很好:

/// @dot "caption"
/// digraph {
///     ClassDotA [ URL="@ref ClassDotA" ];
///     ClassDotB [ URL="@ref ClassDotB" ];
///     ClassDotA -> ClassDotB -> ClassDotC;
///     ClassDotB -> ClassDotD;
/// }
/// @enddot

void main()
{
 //write code here
}

我想將植物添加到這個問題中。 這是一個基於文本的 uml 圖生成器。 它的偉大之處在於您可以生成運行時輸出(狀態圖、序列圖等)。

例如,每次進行狀態轉換時,都會將 Plantuml 格式的行打印到文件中。 當程序終止時(或在任何時候真正終止),您在輸出文件上運行 plantuml(可能需要添加開始\/結束標簽 - 微不足道),您會得到一個 uml 圖!...我已經在 3 個不同的項目中使用了它- 主要用於序列圖。

好的,所以這不是真正的“離線”設計文檔,在某些方面它更好,因為您可以獲得自文檔代碼,因為生成的圖表正是代碼正在執行的操作。 下面是一個非常簡單的 Plantuml 序列圖示例:

@startuml
component1 -> component2 : helloMsg
component2 -> component1 : replyMsg
@enduml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM