一. 什么是Doxygen?
Doxygen 是一個程序的文件產生工具,可將程序中的特定批注轉換成為說明文件。通常我們在寫程序時,或多或少都會寫上批注,但是對於其它人而言,要直接探索程序里的批注,與打撈鐵達尼號同樣的辛苦。大部分有用的批注都是屬於針對函式,類別等等的說明。所以,如果能依據程序本身的結構,將批注經過處理重新整理成為一個純粹的參考手冊,對於后面利用您的程序代碼的人而言將會減少許多的負擔。不過,反過來說,整理文件的工作對於您來說,就是沉重的負擔。
Doxygen 就是在您寫批注時,稍微按照一些它所制訂的規則。接着,他就可以幫您產生出漂亮的文檔了。
因此,Doxygen 的使用可分為兩大部分。首先是特定格式的批注撰寫,第二便是利用Doxygen的工具來產生文檔。
二. 下載地址
doxygen-1.8.4-setup.exe
http://jaist.dl.sourceforge.net/project/doxygen/rel-1.8.4/doxygen-1.8.4-setup.exe
graphviz-2.30.1.msi(不是必需)如果需要使用更強大的功能比如類繼承體系圖等則需要安裝此軟件配置使用
http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.30.1.msi
三. C#注釋
<Summary> 對整體進行概要性描述
<summary>Description</summary>
類、屬性(不推薦)、方法等
<para> 跟在Summary之后,對方法所涉及的入口參數進行有效的解釋
<param name=username>本參數是用戶的帳號</param>
方法的入口參數;
<returns> 對方法的返回值進行解釋;
<returns>返回值零代表操作成功,-1代表操作不成功</returns>
方法的返回值;
<remarks> 對一些語句進行備注性描述
<remarks>本類需要調用另外一個User類相關方法</remarks>
類、方法、屬性等;
<see> 在生成的文檔中產生一個連接到其它描述的超鏈接;
<see cref=”[member]”/>
可以在其它注釋標識符中加入
<seealso> 與上者的區別是本標識符顯示超鏈接在一個文檔的尾部的“See Also”區域,而前者在文檔之中;
<seealso cref=”[member]”/>
不可以在其它注釋標識符中加入
<value> 對一個屬性進行概要性解釋;
<value>這是一個public屬性</value>
屬性
<code> 如果需要置入一部分源代碼段,可以使用本標識符將其標記出來
<code>
public int add(int a,b)
{
return a+b;
}
</code>
可以在其它注釋標識符中加入
<exception> 對程序中可能拋出的異常做解釋;
<exception cref=”System.Exception”>拋出的異常情況</exception>
在方法當中如果有拋出異常,如“try…catch結構”時可以使用本標識符做解釋
<permission> 對方法的訪問權限做一些解釋:
<permission cref=”System.Security.PermissionSet”>這是公共方法</permission>
方法,屬性
<c> 與<code>標識符基本相同,但本標識符僅用於單行代碼;
<c>return a+b;</c>
可以在其它標識符中插入使用;
<example> 舉例說明,通常與<code>配套使用;
<example> 以下示例說明如何調用Add方法:
<code>
class MyClass
{
public static int Main()
{
return Add(1+2);
}
}
</code>
</example>
可以在其它標識符中插入;
<paramref> 在其它地方引用一個入口參數
<paramref cref=”a”>請注意,這是一個整型參數</paramref>
四. 配置
Step 1:是Doxygen的工作目錄,請指定一個已存在的非中文的文件夾
主界面如下圖:
Step 2:具體配置
Wizard選項卡
Project
Mode
Output
將With search function的鈎去掉
Diagrams
(Use built-in class diagram generator)將使用內置的生成功能生成每個類的類圖,只有一個類是不為生成的。
如果需要更加大的功能比如類繼承體系圖請選擇第三項(Use dot tool from the GraphViz package)需要安GraphViz。
Export選項卡
Project
OUTPUT_LANGUAGE選擇chinese
TAB_SIZE是Tab的長度
Build
默認是會生成public方法,這里也選擇EXTRACT_ALL。它保證輸出所有public方法及project方法,EXTRACT_STATIC是生成靜態方法。
Input
Input為輸入目錄,支持多個目錄,我們可以放入項目目錄和include目錄,下面的Exclude是忽略目錄與文件,可自行添加。
Index
選擇ALPHABETICAL_INDEX,類中將有一個組合類型索引項。
生成的索引
HTML
如果你之前選擇了(prepare form compressed HTML(.chm))這里抽GENERATE_HTMLHELP項會是選擇狀態,它下面的CHM_FILE填寫你的CHM文檔的名字。HHC_LOCATION則選擇你的HTML Help WorkShop安裝目錄下的HHC程序,一般會在C:/Program Files (x86)/HTML Help Workshop/hhc.exe。選擇TOC_EXPAND會生成左邊的樹目錄。
Dot
如果你選用內置的生成功能(Use build-in class diagram generator)此時CLASS_DIAGRAMS會是選擇狀態,而HAV_DOT是未選擇狀態,如果你選擇用GraphViz的dot工具生成(Use dot tool from the GraphViz package)情況則相反,請你選擇上CLASS_DIAGRAMS。此時你需要設置下面的DOT_PATH為GraphViz的安裝目錄,否則將無法生成。
另外以下選項選擇則生成對應的圖,不選擇則不生成。
CLASS_GRAPHS 類圖
COLLABORATION_GRAPH 協作圖
GROUP_GRAPHS 組圖
UML_LOOK 是否UML外觀
INCLUDE_GRAPH include
INCLUDED BY GRAPH 被include
CALL_GRAPH 調用
CALLER_GRAPH 被調用
DIRECTORY_GRAPH 目錄圖
GRAPHICAL_HIERARCHY 繼承體系圖
配置好后中進入Run選項卡單擊Run Doxygen即開始生成。
生成完畢后

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DoxygenTest { public class Test { /// <summary> /// 這個是為了測試生成的文檔 /// </summary> /// <example> /// <code> /// Test.DoxygenTest("測試",1000); /// </code> /// </example> /// <param name="str">參數1是字符串</param> /// <param name="int1">這個是整型</param> /// <returns>返回空串</returns> public static string DoxygenTest(string str, int int1) { return string.Empty; } } }