通過源代碼分析引擎,極客討論器可以將整個項(xiàng)目的源代碼一鍵生成一個可交互界面:函數(shù)地圖。它是一個由節(jié)點(diǎn)和連線組成有向圖,節(jié)點(diǎn)是項(xiàng)目里的所有函數(shù),連線是函數(shù)間的調(diào)用關(guān)系。
函數(shù)地圖是一個界面而不是一張圖片,節(jié)點(diǎn)和連線都是可以點(diǎn)擊的。雙擊節(jié)點(diǎn)可以定位源代碼位置到節(jié)點(diǎn)對應(yīng)的函數(shù),雙擊連線可以定位源代碼到連線對應(yīng)的函數(shù)調(diào)用上。 如右圖所示,雙擊節(jié)點(diǎn)CHTMLReader::_ParseDocument,打開了此函數(shù)的定義代碼。
CHTMLReader::_ParseDocument
反過來也可以通過代碼在地圖中定位。 如右圖所示,選中CHTMLAttributes::ParseFromStr函數(shù)的代碼,地圖自動轉(zhuǎn)到對應(yīng)的函數(shù)節(jié)點(diǎn)處,它和它的調(diào)用函數(shù),被調(diào)用函數(shù),以及它們間的連線自動變色以凸顯。
CHTMLAttributes::ParseFromStr
節(jié)點(diǎn)上還有狀態(tài)圖標(biāo),它表示此節(jié)點(diǎn)對應(yīng)函數(shù)的修改狀態(tài),和文件列表里的文件狀態(tài)一樣,函數(shù)的修改狀態(tài)也有增/刪/改狀態(tài)。 如右圖所示,函數(shù)CHTMLAttributes::ParseFromStr增加了注釋,它的函數(shù)節(jié)點(diǎn)顯示此函數(shù)狀態(tài)為“有修改”。