understand軟件使用教程
Understand特色
- 支持多語言:Ada、 C、 C++、C#、 Java、 FORTRAN、 Delphi、Jovial、PL/M ,混合語言的項目
- 多平臺:Windows、Linux、Solaris、HP-UX、IRI、MAC OS X
- 代碼語法高亮、代碼折疊、交叉跳轉、書簽等基本閱讀功能。
- 可以對整個項目的架構、metrics進行分析并輸出報表。
- 可以對代碼生成多種圖(butterfly graph、call graph、called by graph、control flow graph、UML class graph等),在圖上點擊節(jié)點可以跳轉到對應的源碼位置。
- 提供Perl API便于擴展。作圖全部是用Perl插件實現(xiàn)的,直接讀取分析好的數(shù)據(jù)庫作圖。
- 內置的目錄和文件比較器。
- 支持項目的快照,并能和自家的TrackBack集成便于監(jiān)視項目的變化。
軟件說明
其功能比Source Insight多(比如enum值的顯示),而且#ifdef包含的比較多嵌套。
Source Insight嵌套太多時有bug。
其流程圖也比Source Insight完整。
Source Insight的顯示好、體積比較小、編輯速度快。
導入項目
導入項目有兩種方法:
一種是從菜單欄點擊文件–>新建–>項目;
另一種是點擊下面界面中間的新建項目;
搜索功能
1.左側項目結構中搜索:
鼠標點擊左側上面項目架構窗口,然后按CTRL + F鍵會出現(xiàn)如下圖所示的搜索框,在框中輸入想要的類回車即可
2.類中方法搜索:
將鼠標定位到右側代碼中,點擊CTRL + F,會彈出搜索框,輸入方法回車即可:
3.在文件中查找:
快捷鍵F5或者去上面菜單欄中的"搜索"欄中查找,輸入想要的類或者方法,回車查找,下面會列出所有使用的地方:
4.查找實體:
菜單欄"搜索"中最后一項–查找實體,點擊輸入要查找的實體,回車查找:
快速搜索是軟件快速使用必備的技能,包括快速定位類,方法,常量等,可以快速幫助我們解決問題。
項目視圖
項目視圖包含很多的功能,能夠自動生成各種流程圖、結構圖,有助于快速理清代碼邏輯、結構等,以便快速理解項目流程,快速開發(fā)。
視圖查看方式有兩種:
一種是鼠標點擊要查看的類或者方法等上面,然后右鍵彈出菜單,鼠標移動到圖形視圖,然后彈出二級菜單。
另一種方式是點擊要查看的類或者方法,然后找到菜單欄中圖形–>圖形;然后點擊圖標右下角的下拉箭頭,彈出如下菜單,即可選擇查看相關視圖:
層級關系視圖分類:
如下代碼示例:
void root(void)
{
//平臺初始化
Init_Flats();
//創(chuàng)建系統(tǒng)任務
ShowInitInfo("創(chuàng)建系統(tǒng)任務2...");
CreateSysTask2();
//加載主維護口
ShowInitInfo( "加載維護端口..." );
InitSysPort();
//初始化負控系統(tǒng)
ShowInitInfo("創(chuàng)建/掃描系統(tǒng)文件...");
if(!bInSafe)
InitFKSystem();
if(bInSafe)
{
Trace("安全模式");
}
ExInitShowInitInfo();
//退出ROOT任務
}
1.Butterfly:
顯示調用和被調用關系,如果存在。選定的實體用紅色標識,如圖:

2.Calls:
顯示從此實體發(fā)出的整個調用鏈。 實體之間的每條線被讀作“x調用y”。

在該示例中,可知,root函數(shù)中調用的函數(shù)。
3.Called By:
展示此實體被哪些代碼直接調用,此圖是從底部向上看或者從右到左看;

4.Calls Relationship/Calledby Relationship:
展示兩個實體間的調用和被調用關系。
操作方法:首先右鍵選擇第一個實體,然后點擊另一個實體,如果選擇錯誤,可以再次點擊其他正確即可,然后點擊ok;
Calls Relationship:
root 調用ShowInitInfo

Calledby Relationship:
ShowInitInfo被root調用

5.Contains:
展示一個實體中的層級圖,也可以是一個文件,一條連接線讀作”x includes y“;
6.Extended By:
展示此類被哪些類所繼承,
7.Extends:
展示此類繼承自那個類:
結構關系視圖分類:
1.Graph Architecture:
展示一個框架節(jié)點的結構關系;
2.Declaration:顯示實體的結構,例如包括:函數(shù)名,函數(shù)返回值、函數(shù)實體被哪些函數(shù)調用、函數(shù)實體調用的函數(shù);

3.Parent Declaration:展示這個實體在哪里被聲明了的結構關系;
4.Declaration File:
展示所選中實體的定義文件的描述,包括該文件包含的頭文件、實體(例如函數(shù),類型,變量,常量等);

gdwLastSaveTime為文件定義的變量。
5.Declaration Type:展示組成類型;
6.Class Declaration:展示定義類和父類的成員變量;
7.Data Members:展示類或者方法的組成,或者包含的類型;
8.Control Flow:展示一個實體的控制流程圖;

9.Cluster Control Flow:展示一個實體的流程圖或者類似實體類型,這個比上一個更具有交互性;
10.UML Class Diagram:展示這個項目中或者一個文件中定義的類以及與這個類關聯(lián)的類
11.UML Sequence Diagram:展示兩個實體之間的時序關系圖;
12.Package:展示給定包名中聲明的所有實體
13.Task:展示一個任務中的參數(shù),調用,實體
14.Rename Declaration:展示實體中被重命名的所有實體
由于視圖比較多,所以就一一貼上代碼,主要還是需要自己去調試,查看各個功能視圖的展示結構以及作用,孰能生巧,多操作幾下就會了,所以不再做過多的解釋。最終希望這款軟件能夠幫助你快速開發(fā),快速閱讀別人的或者自己的代碼。
術語 Terminology
Architecture 層級:
An 架構 is a hierarchical aggregation of source code units (entities). An 架構 can be user created or automatically generated. Architectures need not be complete (that is, an 架構’s flattened expansion need not reference every source entity in the database), nor unique (that is, an 架構’s flattened expansion need not maintain the set property).
層級表示代碼單元(或者實體)組成的層次結構,可以由用戶手動創(chuàng)建,也可由本
軟件自動生成。一個層級可以不完整(例如一個層級的扁平化擴展有可能不會關聯(lián)數(shù)據(jù)庫中的所
有代碼實體),也可能不唯一(扁平化擴展的層級可能不會處理其預設屬性)。
Database 數(shù)據(jù)庫
The database is where the results of the source code analysis, as well as project settings, are stored. By default, this is a project’s “.udb” file.
代碼經(jīng)分析后產(chǎn)生的中間結果,以及工程設置保存在數(shù)據(jù)庫,其缺省擴展名為“.udb”。
Entity 實體
An Understand “entity” is anything it has information about. In practice this means anything declared or used in your source code and the files that contain the project. Subroutines, variables, and source files are all examples of entities.
Understand 描述的“實體”表示任何包含信息的事物,具體來說,代碼中聲明或
者使用的標識、包含工程的文件、子程序、變量、源文件都可以被稱為實體。
Project 工程
The set of source code you have analyzed and the settings and parameters chosen. A “project file” contains the list of source files and the project settings.
表示源代碼的集合以及相關的配置和參數(shù),工程文件包含源文件清單和工程設置。
Relationship 關聯(lián)
A particular way that entities relate to one another. The names of relationships come from the syntax and semantics of a programming language. For instance, subroutine entities can have “Call” relationships and “CalledBy” relationships.
互作用的實體之間的關系,關聯(lián)的名稱來源于編程語言的語法和語義,例如過程式實體具有“調用”和“被調用”的關聯(lián)對象。
Script 腳本
Generally a Perl script. These can be run from within Understand’s GUI, or externally via the “uperl” CTRL. The Understand Perl API provides easy and direct access to all information stored in an Understand database.
通常指perl腳本,腳本可以通過Understand 2.5的圖形用戶界面或者外部的腳本命令執(zhí)行。Understand Perl API提供了快捷的訪問Understand數(shù)據(jù)庫所有信息的接口。
parts 部件
下面的圖形展示了一些Understand 圖形用戶界面(GUI) 中常用的部件:

常用詞匯
單詞 釋義
Macros 宏
Variables 變量
Constants 常量
Functions 函數(shù)
Reference 引用
Metrics 參數(shù)
Architectures 架構
parameters 參數(shù)
Call 調用
Compiler 編譯器
component 組件、部件、元件
portability 可移植性
Cluster 集群
Function Static Variables 靜態(tài)函數(shù)變量
case sensitive 區(qū)分大小寫
Whole Words Only 整詞匹配
layout 布局
summary 綜述、總論
features 特征
control-flow graphs 控制流程圖
123456789101112131415161718192021
右鍵菜單
代碼編輯窗口的右鍵菜單提供了很多瀏覽編輯操作的快捷方式,也提供了相關實體的特定信息。
以下介紹了右鍵菜單包含的典型的瀏覽操作(與點擊對象有關):
View Information 信息查看(參見信息瀏覽器)
Graphic Views 圖形視圖(參見)
Edit Source/Definition 代碼編輯(參見)
User Tools 用戶工具(參見)
Explore 瀏覽(參見層級查看)
Find In… 查找(參見多文件查找)
Add Favorite 添加到收藏夾(參見收藏夾)
Metrics Chart 度量圖表(參見)
以下介紹了右鍵菜單包含的典型的編輯操作(與點擊對象有關):
Undo/Redo 撤銷/重做
Cut/Copy/Past 剪切/復制/粘貼(參見文本選擇和拷貝)
Select All 全選(參見文本選擇和拷貝)
Jump to Marching Brace 跳到塊末
Select Block 塊選擇
Hide/Show Inactive Lines 行顯示/隱藏
Fold All 折疊所有分支
Soft Wrap 軟包裝
Comment Selection/Uncomment Selection 注釋選擇/代碼選擇
Change Case 大小寫切換
Revert 反轉
Add Bookmark 添加書簽活動
層級結構瀏覽器
層級結構節(jié)點(如文件系統(tǒng)目錄節(jié)點和本季度修改節(jié)點)的右鍵菜單包含了以下一些其他對象的右鍵菜單沒有提供的額外選項:
Graphical Views>Dependency Graphs: 顯示層級結構各節(jié)點的依賴關系,參見。
Metrics Summary:提供選中節(jié)點各實體的度量數(shù)據(jù),這些度量數(shù)據(jù)基于當前節(jié)點下的實體,不包括子節(jié)點中的實體,參見。
Metrics Export:將度量總結導出到一個CSV 文件,參見。
XML Export:將層級結構中選中節(jié)點及子節(jié)點包含的實體以XML 格式導出,參見。
Edit Architecutre:為用戶自己創(chuàng)建的層級結構打開一個層級結構構建器,Understand
自動構建的層級結構不能被修改,參見。Rename
Architecture:為用戶自己創(chuàng)建的層級結構或者節(jié)點打開一個層級結構重命名窗口供用戶對其中名稱進行修改,Understand 2.5
自動構建的層級結構不能被重命名,參見。Duplicate Architecture:打開層級結構復制窗口對選中層級結構的副本進行命名,參見。
Manage Architecture:打開層級結構管理窗口,參見。
轉自:
[1] http://www.rzrgm.cn/hackerl/p/5749169.html
[2] http://blog.csdn.net/a731062834/article/details/50988966

浙公網(wǎng)安備 33010602011771號