一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

DoxyGEN 的使用與Graphviz 的使用

 guitarhua 2013-11-04

以下內(nèi)容摘自維基百科,地址http://zh./wiki/Doxygen。 
Doxygen 是一個 C++, C, Java, Objective-C、Python、IDL (CORBA 和 Microsoft flavors)、Fortran、VHDL、PHP、C#和D語言的文檔生成器。可以運行在大多數(shù)類Unix系統(tǒng),以及Mac OS X操作系統(tǒng)和Microsoft Windows 。 初始版本的Doxygen借鑒了一些老版本DOC++的代碼;隨后,Doxygen源代碼由Dimitri van Heesch重寫。
Doxygen是一個編寫軟件參考文檔的工具。 該文檔是直接寫在代碼中,因此比較容易保持更新。 Doxygen 可以交叉引用文檔和代碼,使文件的讀者可以很容易地引用實際的代碼。
KDE 使用Doxygen作為其部分文檔且 KDevelop 具有內(nèi)置的支持。 Doxygen的發(fā)布遵守GNU General Public License,并且是自由軟件。
需要注意的是在使用doxygen的時候,會自動生成一些類圖,以及函數(shù)調(diào)用關(guān)系圖,如果要生成這些圖,還需要另外一個很牛叉的開源庫Graphviz。Graphviz (Graph Visualization Software的縮寫)是一個由AT&T實驗室啟動的開源工具包,用于繪制DOT語言腳本描述的圖形。它也提供了供其它軟件使用的庫。Graphviz是一個自由軟件,其授權(quán)為Common Public License。其Mac版本曾經(jīng)獲得2004年的蘋果設(shè)計獎。更多關(guān)于Graphviz的介紹參考其官方網(wǎng)站:http://www./。

doxgen使用首先打開程序的doxfile文件,

然后進行編譯

通過查看show HTML既可以實現(xiàn)查看生成的幫助文檔

利用Graphviz 畫結(jié)構(gòu)圖 轉(zhuǎn)載自http://www.cnblogs.com/sld666666/archive/2010/06/25/1765510.html

1. Graphviz介紹

    Graphviz是大名鼎鼎的貝爾實驗室的幾位牛人開發(fā)的一個畫圖工具。

它的理念和一般的“所見即所得”的畫圖工具不一樣,是“所想即所得”。

Graphviz提供了dot語言來編寫繪圖腳本。什么?!畫個圖也需要一個語言??!

不要急,dot語言是非常簡單地,只要看了下面幾個列子,就能使用了。

 

2. Graphviz的幾個例子

    下面的幾個例子都來自于官方文檔。詳情請見:Graphviz官網(wǎng).

2.1 Fancy graph

 digraph G{

	size = "4, 4";//圖片大小
	main[shape=box];/*形狀*/

	main->parse;
	parse->execute;

	main->init[style = dotted];//虛線

	main->cleanup;

	execute->{make_string; printf}//連接兩個

	init->make_string;

	edge[color = red]; // 連接線的顏色

	main->printf[style=bold, label="100 times"];//線的 label

	make_string[label = "make a\nstring"]// \n, 這個node的label,注意和上一行的區(qū)別

	node[shape = box, style = filled, color = ".7.3 1.0"];//一個node的屬性

	execute->compare;
}

從上面的代碼可以看出,dot語言非常簡單,就是一個純描述性的語言而已。

大家可以把上面的代碼和下圖中的連接對應(yīng)起來看。

                                       1

                                              <圖1. Fancy graph>

 

2.2 Polygon graph

 digraph G{
	size = "4, 4"
	a->b->c;
	b->d;
	
	a[shape = polygon, sides = 5, peripheries=3, color = lightblue, style = filled];
	//我的形狀是多邊形,有五條邊,3條邊框, 顏色的淡藍(lán)色, 樣式為填充
	c[shape = polygon, sides = 4, skew= 0.4, lable = "hello world"];
	//我的形狀是4變形, 角的彎曲度0.4, 里面的內(nèi)容為"hello world"
	d[shape = invtriange];
	//我是三角形
	e[shape = polygon, side = 4, distortion = .7];
	//我是梯形啊
}

 

 

下面是對應(yīng)的圖片:

                                          polygon

                                       <圖2. Polygon graph>

2.3 連接點的方向

     我們可以用“n”,”ne”,”e”,””se”, “sw”,”w”,”nw”,

分別表示沖哪一個方向連接這個節(jié)點(圖形)-“north, northeast……”

如:

 digraph G{
	//b->c[tailport = se];
	b->c:se;
}

 

 

                                         se

                                           <圖3. Se graph>

 

2.4 數(shù)據(jù)結(jié)構(gòu)圖

    數(shù)據(jù)結(jié)構(gòu)圖是我們很容易用到的一類圖形,一個簡單地數(shù)據(jù)結(jié)構(gòu)圖代碼如下:

 digraph g{
	node [shape = record,height=.1//我定義了我下面的樣式;  
 	node0[label = "<f0> |<f1> G|<f2> "];  
	//我是一個node,我有三個屬性,第二個的名字為G,其他兩個為空
        node1[label = "<f0> |<f1> E|<f2> "];  
       node2[label = "<f0> |<f1> B|<f2> "];  
       node3[label = "<f0> |<f1> F|<f2> "];  
       node4[label = "<f0> |<f1> R|<f2> "];  
       node5[label = "<f0> |<f1> H|<f2> "];  
       node6[label = "<f0> |<f1> Y|<f2> "];  
       node7[label = "<f0> |<f1> A|<f2> "];  
       node8[label = "<f0> |<f1> C|<f2> "];  
	
	"node0": f2->"node4":f1;
	//我的第三個屬性連到node4的第二個屬性
	"node0": f0->"node1":f1;
	"node1": f0->"node2":f1;
	"node1": f2->"node3":f1;
	"node2": f2->"node8":f1;
	"node2": f0->"node7":f1;
	"node4": f2->"node6":f1;
	"node4": f0->"node5":f1;
}

 

 

                                         data

                                               <圖4. Data graph>

2.5 Hash table graph

 digraph g {
	nodesep = .05;
	rankdir = LR;
	
	node[shape = record, width = .1, height = .1];
	
	node0[label = "<f0> |<f1> |<f2> |<f3> |<f4> |<f5> |<f6> |", height = 2.5];
	//我是一個節(jié)點,我有7個屬性
	node [width = 1.5];
	node1[label = "{<n> n14 | 719 |<p>}"];
	//我還是一個節(jié)點, 也定義了三個屬性
	node2[label = "{<n> a1 | 719 |<p>}"];
	node3[label = "{<n> i9 | 512 |<p>}"];
	node4[label = "{<n> e5 | 632 |<p>}"];
	node5[label = "{<n> t20 | 959 |<p>}"];
	node6[label = "{<n> o15 | 794 |<p>}"];
	node7[label = "{<n> s19 | 659 |<p>}"];

	//好了,我開始連接了
	node0:f0->node1:n;
	node0:f1->node2:n;
	node0:f2->node3:n;
	node0:f5->node4:n;
	node0:f6->node5:n;
	node2:p->node6:n;
	node4:p->node7:n;
}

 

這是一個簡單地哈希表,如下圖所示

                                             Hash

                                                          <圖5. Hash table graph>

 

 

2.6 Process grahp

下面畫一個輕量級的流程圖。

 digraph g {
	subgraph cluster0 {
		//我是一個子圖,subgraph定義了我,
		node[style = filled, color = white];
		//我之內(nèi)的節(jié)點都是這種樣式
		style = filled;
		//我的樣式是填充
		color = lightgrey;
		//我的顏色
		a0->a1->a2->a3;
		label = "prcess #1"
		//我的標(biāo)題
	}

	subgraph cluster1 {
		//我也是一個子圖
		node[style = filled];
		b0->b1->b2->b3;
		label = "process #2";
		color = blue;
	}

	//定義完畢之后,下面還是連接了
	start->a0;
	start->b0;
	a1->b3;
	b2->a3;
	a3->end;
	b3->end;
	
	start[shape=Mdiamond];
	end[shape=Msquare];
}

 

 

 

結(jié)果輸出圖形如下:

                                             Process

                                                <圖6. Hash table graph>

 

3. 小結(jié)

    相信這幾個列子下來,各位看官對graphviz也有了了解了吧,我個人用了一遍下來發(fā)現(xiàn)太爽了。

而對于dot語言,作為一個描述性的語言就非常簡單了, 只要有編程基礎(chǔ)的人,模仿幾個列子下來

應(yīng)該就能應(yīng)用了。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    99秋霞在线观看视频| 亚洲中文字幕视频在线观看| 亚洲国产综合久久天堂| 亚洲一区二区三区在线中文字幕| 国产日本欧美韩国在线| 国产精品偷拍一区二区| 日本午夜乱色视频在线观看| 久久国产亚洲精品赲碰热| 免费一区二区三区少妇| 国产精品内射视频免费| 国产亚洲午夜高清国产拍精品| 亚洲中文字幕人妻系列| 精品亚洲一区二区三区w竹菊| 亚洲做性视频在线播放| 91日韩欧美在线视频| 在线免费观看一二区视频| 欧美日韩精品综合一区| 内用黄老外示儒术出处| 成年人免费看国产视频| 蜜桃av人妻精品一区二区三区| 少妇人妻中出中文字幕| 欧美胖熟妇一区二区三区| 国产女高清在线看免费观看| 精品一区二区三区三级视频| 成年人黄片大全在线观看| 中文字幕精品一区二区年下载| 亚洲精品国产美女久久久99| 中文字幕精品人妻一区| 国产精品一区二区香蕉视频| 中文字幕91在线观看| 欧美日韩国产综合特黄| 日韩综合国产欧美一区| 中文字幕91在线观看| 日本少妇中文字幕不卡视频| 欧美尤物在线视频91| 亚洲熟女诱惑一区二区| 99久久精品午夜一区二| 加勒比东京热拍拍一区二区| 九七人妻一区二区三区| 国产精品视频一区麻豆专区 | 国产在线观看不卡一区二区 |