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或者
無奈,我們的解決方案只能是重新編譯DoxyGen程式碼,為了滿足搜尋,只要保證右邊的頁面檔案不是UTF-8即可。 我們首先修改writeDefaultHeaderFile這個函式的程式碼,將其charset=GB2312。然後在 TranslatorDecoder的建構函式中修改m_toUtf8 = (void*)-1;即遮蔽文字寫入時最終的轉換函式。最後刪除INPUT_ENCODING的設定或者輸入UTF-8。這樣會使DoxyGen認為我們 的文字是
另外需要補充的是,還有一種方案是不用修改作者的原始碼,但是需要將DoxyGen生成的右邊的HTML檔案使用工具(如iconv)手工轉換成GB2312,然後再使用HTML Help Workshop生成
最後,doxygen是一個開源專案,並且支援vs2005專案,這樣一來,如果你覺得哪裡不順手,完全可以把程式碼下載後自行編譯。雖然我感覺doxygen的程式碼寫的不能算是perfect,但是對於一個這樣的工程,我們無論如何都需要一種敬意。祝好運~
這樣,基本上就能夠用doxygen生成漂亮的文件了。程式碼方面,doxygen支援多種格式的註釋風格,根據manual選擇自己喜歡的就好。
(以上兩種方法為網友提供)
3.對於tcl語言的編寫規則
我嘗試了很長世間,確定所有的C的規則它都可以使用,舉個例子:
#noteBeging===================================================
#函 數:*******
#描 述:配置***,及相關的引數
#輸 入:
# -dut:*******
# -tunnelid:*******
# -tunnelmode:************************
# -source:v6_tunnel:************************
# -dest:v6_tunnel:************************
# intfaddr:v6_tunnel:************************
# -mask:v6_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 -tunnelmode:Grev4v6TunnelConfig隧道的模式,具體可以選擇"0 0"或者"ipv6ip 6in4"
#@param -source:v6_tunnel隧道的源地址或者源介面(自動根據source為ipv4/ipv6地址或者介面選擇)
#@param -dest:v6_tunnel隧道的目的地址(自動根據dest為ipv4/ipv6地址選擇相應的模式)
#@param -intfaddr:v6_tunnel隧道介面的ip/ipv6地址
#@param -mask:v6_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標記為##開頭到空行結束即
##---開始
#
#
#
#
----結束
程式碼區域