使用doxygen和graphviz來產生原始碼函數調用圖__其他

來源:互聯網
上載者:User
一、問題的產生 最近需要分析一個很老的工程的原始碼,原始碼的內容複雜,而且找不到比較熟悉此代碼的人。我這裡首先要分析下函數間的調用關係,於是從網上搜尋到了如下方法:使用doxygen和graphviz來自動分析函數間的調用關係。
二、工具簡介 doxygen:( http://www.stack.nl/~dimitri/doxygen/index.html)
Doxygen is the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D.
是一種從標記過的C++原始碼產生文檔的標準工具,也支援C,Objective-C,C#,PHP,Java,Python,IDL,Fortran,VHDL,Tcl等。
graphviz:( http://www.graphviz.org/)
Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics,  software engineering, database and web design, machine learning, and in visual interfaces for other technical domains. 
是一種開源的將結構化資訊展示成抽象圖和網路的工具,用於網路,生物資訊,軟體工程,資料庫和網站設計,機器學習以及其他技術領域的可視性介面。
三、產生函數調用圖 安裝此兩種工具,然後可以方便的分析代碼,產生相應的函數調用圖。
1)開啟DoxyWizard,彈出Doxygen配置介面。 2)如下圖,標出了主要需要設定的選項

Step1:設定doxygen的工作目錄,這裡主要是產生doxygen啟動並執行目錄 Step2:選項設定,wizard和expert選項可以同時設定。 wizard選項卡中,選擇Project Name作為工程名稱,將來會顯示在文檔的標題中;選擇Source code directory,設定原始碼所在目錄,Destination directory設定文檔的組建目錄;選擇Scan recursively則遞迴分析原始碼目錄中的子目錄內的原始碼。
3)由於我需要從沒有任何標記的原始碼中分析出函數調用關係,所以還需要設定expert選項卡

如圖,勾選Build選項中的與函數有關的選項,EXTRACT_ALL必須勾選


如圖,由於使用到了Graphviz,所以要設定Dot選項,勾選HAVE_DOT,並設定DOT_PATH為Graphviz的bin目錄。勾選CALL_GRAPH和CALLER_GRAPH,產生函數呼叫歷程圖。
4)最後選擇Run選項卡,點擊Run doxygen,產生文檔檔案。 5)開啟文檔檔案,在函數的分析中即可看到函數調用圖。

四、小結 利用這兩個工具可以為分析代碼做一個初步的準備,也可以為已標記好的代碼產生比較完備的文檔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.