前言
之前的工作環境習慣了使用source insight查看函數分析代碼,切換到mac下后改用vscode,發現缺少函數調用關系圖生成。跨平台的understand可以很好的解決,但是公司沒有購買,因此需要尋找一個免費、跨平台的替代工具。doxygen + graphviz是不錯的選擇。
原文參考:https://blog.csdn.net/benkaoya/article/details/79763668
1 介紹
doxygen 是跨平台的工具,官網:http://www.doxygen.nl/
支持Linux、Windows、Mac OS X系統(本文將以Windows版本為例)。
支持C語言在內的多種語言的分析,生成的幫助文檔格式可以是CHM、RTF、PostScript、PDF、HTML和Unixman page等。
我使用doxygen的主要目的是生成函數調用關系圖,但它能做的遠不止於此,它是一款優秀的文檔自動生成工具。它可以將代碼中的注釋轉換成幫助文檔(注釋格式要符合 doxygen 要求才行,FFmpeg API Documentation 就是用doxygen自動生成的),它也可以通過靜態分析代碼,生成「頭文件引用關系圖」、「函數調用關系圖」、「繼承圖」以及「協作圖」來可視化文檔之間的關系。
有了這樣的工具,在發布程序版本的同時,發布幫助文檔也將變得簡單、高效,配合持續集成系統(如Jenkins),自動構建系統,幫助文檔可以跟隨代碼一起實時、輕松的發布版本。
本文主要介紹如何使用 doxygen 生成函數調用關系圖,其他功能(如將代碼的注釋生成幫助文檔)不在本文討論范圍內,這是一個入門級的教程。
2 安裝
2.1 安裝 graphviz
doxygen 自身沒辦法生成關系圖,需要依賴 graphviz 才行,得先安裝 graphviz。根據自身系統選擇安裝的版本。
2.2 安裝doxygen
根據自身系統選擇安裝的版本。
安裝目錄下有幾個我們需要關心的:
- 幫助手冊:有兩種版本,doxygen_manual.chm和html版
- 配置文件向導:doxywizard.exe,通過這個向導可以快捷地生成配置文件,doxygen.exe 再根據配置文件分析源碼,輸出各種圖和文檔
2.3 源碼分析
1)運行 doxywizard.exe,配置 Wizard > Project 頁面
點擊 Wizard 選項卡,如下圖所示:
2)選擇程序語言
根據實際情況選擇,我這里選擇C
3)配置 Expert > Project 頁面
3)配置 Expert > Build頁面
4)配置 Expert > Dot頁面
至此,配置完畢,可以通過 File > Save 菜單將上面所有配置導出(保存)到配置文件,以免丟失配置,配置文件默認保存在 Step1 設置的工作目錄下。
當然你也可以通過 File > Open 菜單導入(打開)一個現有的配置文件。可以打開配置文件看看,里面參數非常多,doxywizard 圖形化的便捷性也就體現在這里。
5)分析源碼
Run 選項卡,點擊 Run doxygen 按鈕,幕后就會根據剛才的配置執行 doxygen.exe 命令:
6)查看分析結果
等分析完畢,最后點擊 Show HTML output 按鈕就會啟動瀏覽器顯示分析結果,如下圖所示:
7)查看doxygen分析后的結果
點開文件列表
頭文件包含關系圖與函數調用關系圖如下,從圖中可以發現,doxygen不會顯示調用的系統API。