利用doxygen提升源代碼閱讀效率

閱讀開源項目的源代碼是提升本身編程能力的好方法,而有一個好的源代碼閱讀工具無疑可以讓你在閱讀源代碼時事半功倍。以前找過很多源代碼閱讀工具,像SourceInsight、sourcenav、scitools等,可是這些工具要麼是收費的,要麼只有windows版本。sourcenav雖然是開源的,可是我的以爲不是很好用。直到最近畢設時老師要求用doxygen生成代碼文檔,在使用doxygen的過程當中,忽然發現這個東西配合上瀏覽器其實就是一個很好的源碼閱讀工具,因此給你們推薦一下。html

 

廢話很少說,相信你們都知道doxygen是一個用來生成源碼文檔的工具,很多有名的開源項目想opencv,boost都是用它來生成文檔的。雖然正常要生成一份詳細的文檔須要咱們在代碼中按照必定格式寫註釋,可是doxygen也可以從沒有這些註釋的源碼中抽取出函數定義、類定義、變量定義、宏定義等信息,而且可以提供交叉引用,爲咱們閱讀代碼提供方便。我這裏用一個開源項目Google Protobuf來作一下演示。編程

首先按照安裝教程(http://www.stack.nl/~dimitri/doxygen/manual/install.html)安裝好doxygen。windows

進入存放項目的目錄,運行doxygen -g命令,生成Doxygen配置文件Doxyfile瀏覽器

Doxygen配置文件默認名爲Doxyfile,這裏面是一些格式爲 KEY  =  VALUE的鍵值配置屬性,以下圖。每個屬性前都有相應的說明,doxygen會根據這些配置屬性來生成文檔。編輯器

咱們要編輯器打開Doxyfile後設置以下屬性 (由於文件比較大,須要使用編輯器的查找功能找到這些屬性。函數

INPUT = protobuf-2.5.0/src  (設置項目源代碼目錄的路徑,相對於Doxyfile的位置)

PROJECT_NAME = "ProtoBuf"  (項目名默認爲My Project)

OUTPUT_DIRECOTRY = doc     (設置文檔輸出路徑,相對於Doxyfile的位置)

RECURSIVE = YES            (設置遞歸查找全部子目錄,默認NO只查找當前目錄)

EXTRACT_ALL = YES           (設置抽取代碼中全部實體,默認NO只抽取有doxygen註釋的實體)

SOURCE_BROWSER = YES        (生成交叉引用)

INLINE_SOURCES = YES         (將源代碼包含進文檔,默認NO只包含聲明,不包含定義)

OUTPUT_LANGUAGE = Chinese    (設置文檔語言爲中文)

 

設置後保存,運行doxygen命令生成文檔。工具

能夠看到當前目錄多除了doc/html,和doc/latex目錄,分別包含了html格式和latex格式的文檔。咱們在doc/html目錄下用瀏覽器打開index.html。能夠看到代碼實體按命名空間,類,文件三種方式組織。其中類能夠查看類列表,類索引,類繼承關係,和類成員等。google

咱們選擇google::protobuf::internal::ExtensionFinder類看看具體信息。spa

能夠看到類繼承關係圖,成員函數,詳細描述下還有成員函數的函數原型和跳轉到函數定義的連接(截圖比較大就不發了)。code

其中藍色的連接點擊後可跳轉到函數的具體實現處。

能夠看到在查看具體實現時,全部的藍色連接都表明了項目中定義的實體,如函數,類,成員等。鼠標懸浮上能夠看到簡要信息,也能夠點擊跳轉到詳細信息。這樣在看源碼時遇到一個不清楚的東西就可以隨時看到它的定義。再配合上瀏覽器原有的返回,跳轉,在新標籤打開頁面等功能,閱讀源碼就變得十分方便了。

好了,個人介紹就到這,有興趣的朋友能夠本身試一試,謝謝~

相關文章
相關標籤/搜索