代碼註釋格式化

最近因爲項目需要,整理Qt代碼, 很多註釋格式不符合Doxygen需要。


需求:

找到源代碼中函數實現地方, 解析之前的註釋, 重新生成代碼註釋


後面2個需求,很好解決。現在就是第一個需求比較難實現。


最先想到的是解析器,第一個想到的就是yacc, 可惜找了半天也沒找到現成的c++的產生式, 估計是c++太複雜了。

不過,找到了下面文檔,對如何做解釋器有了一定了解。

http://www.nobugs.org/developer/parsingcpp/


瞭解下來, 基本上Clang是最強大的開源工具。不過,做一個C++解釋器,明顯超出1個星期的工作量, 自己要找的是一個

學習,研究,加使用能一天就解決的工具。


接下來換一個思路, 看看Perl/Python是否有現成的庫支持。

Python 找到了封裝Clang的庫, 可是很遺憾, 嘗試了2次, 編譯失敗,無法安裝成功, 短期內看來無法解決,只能放棄。

http://eli.thegreenplace.net/2011/07/03/parsing-c-in-python-with-clang/


pycparser 不支持c++

CppHeaderParser 支持頭文件解釋 格式很好,滿足需求, 可惜不支持源代碼。


gcc-xml 滿足要求


找到了工具,接下來的任務就簡單了。


整個實現的核心問題是,如何知道一個文件定義了多少類, 實現了多少函數, 分別在文件的多少行。

能夠獲取這些信息, 接下來就是常規的數據格式化問題了。


ctag 也能解決這個問題, 不過不方便的是ctag 生成的是函數的正則表達式, 使用起來稍微有點麻煩, 沒有行號方便。



發佈了122 篇原創文章 · 獲贊 34 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章