1. 程式人生 > >TCL語言在Doxygen中應用的一些記錄

TCL語言在Doxygen中應用的一些記錄

在中興實習的半年,接觸最多的也就是tcl,早期作為學生在校園裡面基本沒有機會接觸到這個語言,不過tcl確實在對字元處理上面有很多的優勢,在自動化測試的應用應該還是很廣泛的。對於doxygen,相信很多人都不陌生,熟練C/C++的人應該經常使用到這個軟體,常被論壇中的人稱作及格開源比較良心的軟體。

早期的doxygen對於tcl語言是不相容的。貌似在最新版本開始已經相容了很多語言,其中就有tcl語言。就自己在使用過程之中的一些問題的發現和解決方法寫下來,方便自己以後查詢,當然如果有人有幸看了有幫助,也很高興。

關於doxygen的配置(網上非常多


注意事項:

1.首頁的Scan recursively

(遞迴查詢目錄下面子檔案),很多時候會忘記勾上

2.編碼問題,chm不能中文搜尋(非常讓人頭疼的問題)

首先要確定自己文件編碼,如果想要生成CHM電子書,最好轉換為GBK

其中有一個問題,就是生成的CHM不支援中文的全文搜尋。原因查看了很多資料發現還是編碼問題。Doxygen中有三處編碼  1.doxyfile,也就是配置檔案 ,2.INPUT_ENCODING,也就是DoxyGen需要解析的輸入檔案的編碼,3.chm_index_encoding 生成的chm檔案索引編碼。按照你需要設定,一般來說GBK或者GB2312  

 但是資料表示HHW不支援UTF-8,僅支援ISO- 8859-1或者

windows-1252編碼。而Doxygen生成的右邊介面統一是UTF-8,這自然出現了不支援中文全文搜尋。而在這種情況下做全文搜尋,理論上只能搜尋英文。

無奈,我們的解決方案只能是重新編譯DoxyGen程式碼,為了滿足搜尋,只要保證右邊的頁面檔案不是UTF-8即可。 我們首先修改writeDefaultHeaderFile這個函式的程式碼,將其charset=GB2312。然後在 TranslatorDecoder的建構函式中修改m_toUtf8 = (void*)-1;即遮蔽文字寫入時最終的轉換函式。最後刪除INPUT_ENCODING的設定或者輸入UTF-8。這樣會使DoxyGen認為我們 的文字是

UTF-8的,從而不用進行轉換。生成替換原始的DoxyGen即可。

另外需要補充的是,還有一種方案是不用修改作者的原始碼,但是需要將DoxyGen生成的右邊的HTML檔案使用工具(如iconv)手工轉換成GB2312,然後再使用HTML Help Workshop生成

最後,doxygen是一個開源專案,並且支援vs2005專案,這樣一來,如果你覺得哪裡不順手,完全可以把程式碼下載後自行編譯。雖然我感覺doxygen的程式碼寫的不能算是perfect,但是對於一個這樣的工程,我們無論如何都需要一種敬意。祝好運~

這樣,基本上就能夠用doxygen生成漂亮的文件了。程式碼方面,doxygen支援多種格式的註釋風格,根據manual選擇自己喜歡的就好。

(以上兩種方法為網友提供)

3.對於tcl語言的編寫規則

我嘗試了很長世間,確定所有的C的規則它都可以使用,舉個例子:

#noteBeging===================================================

#函       數:*******

#描       述:配置***,及相關的引數

#輸       入:

#  -dut*******

# -tunnelid*******

#  -tunnelmode************************

# -sourcev6_tunnel************************

#  -destv6_tunnel************************

#  intfaddrv6_tunnel************************

#   -maskv6_tunnel************************

#  -vrf************************

#  -addconfig************************

#   -help************************

#輸       出:************************

#作       者:******

#實       例:set buf[::rosng::Grev4v6TunnelConfig -dut $DUT1\

#                                                  -tunnelid 1\

#                                                  -soure 1.1.1.1\

#                                                  -dest 1.1.1.1\

#                                                  -intfaddr 100.0.0.1\

#                                                  -mask 255.255.0.0]                                                 

#全域性配置模式輸入interface v6_tunnel1的回顯值為:[lindex $buf[expr[lsearch $buf 0]]]

#noteEnd========================================================

#noteBeging===================================================

##@brief 配置gre隧道,及相關的引數

#@param   -dut:配置Grev4v6TunnelConfig隧道的裝置

#@param   -tunnelid:隧道的id號,如果為空,則為預設值1

#@param   -tunnelmodeGrev4v6TunnelConfig隧道的模式,具體可以選擇"0 0"或者"ipv6ip 6in4"

#@param   -sourcev6_tunnel隧道的源地址或者源介面(自動根據sourceipv4/ipv6地址或者介面選擇)

#@param   -destv6_tunnel隧道的目的地址(自動根據destipv4/ipv6地址選擇相應的模式)

#@param   -intfaddrv6_tunnel隧道介面的ip/ipv6地址

#@param   -maskv6_tunnel隧道藉口的掩碼

#@param   -vrf:隧道介面的vrf

#@param   -addconfig:預設為0:當為1時,增加ip地址,當為0時,刪除隧道介面原ip/ipv6地址重新配置

#@param   -help:列印每個引數的解釋

#@return 返回輸入配置命令後的回顯內容

#@author ***********

#@verbatim 

#set buf[::rosng::Grev4v6TunnelConfig -dut $DUT1\

#                                                  -tunnelid 1\

#                                                  -soure 1.1.1.1\

#                                                  -dest 1.1.1.1\

#                                                  -intfaddr 100.0.0.1\

#                                                  -mask 255.255.0.0]                                                 

#全域性配置模式輸入interface v6_tunnel1的回顯值為:[lindex $buf[expr[lsearch $buf 0]]]

#@verbatim

#noteEnd======================================================== 

其中tcl語言註釋是以#開頭的。。所以doxygen標記為##開頭到空行結束即

##---開始

#

#

#

#

----結束

程式碼區域