1. 程式人生 > >understand軟件使用教程(轉)

understand軟件使用教程(轉)

上層 子節點 條件 gin gpo parent track cluster 混合

源代碼閱讀工具(Scientific Toolworks Understand)的特色

1、支持多語言:Ada, C, C++, C#, Java, FORTRAN, Delphi, Jovial, and PL/M ,混合語言的project也支持
2、多平臺: Windows/Linux/Solaris/HP-UX/IRIX/MAC OS X
3、代碼語法高亮、代碼折叠、交叉跳轉、書簽等基本閱讀功能。
4、可以對整個project的architecture、metrics進行分析並輸出報表。
5、可以對代碼生成多種圖(butterfly graph、call graph、called by graph、control flow graph、UML class graph等),在圖上點擊節點可以跳轉到對應的源代碼位置。
6、提供Perl API便於擴展。作圖全部是用Perl插件實現的,直接讀取分析好的數據庫作圖。
7、內置的目錄和文件比較器。
8、支持project的snapshot,並能和自家的TrackBack集成便於監視project的變化。


軟件說明

功能比sourceinsight多些(比如enum的值的顯示),而且#ifdef包含的比較多嵌套,sourceinsight如果太多嵌套,有bug. 流程圖之類也比sourceinsight完整.sourceinsight的顯示明顯好多了,而且體積比較小,編輯速度快,可能是用熟的關系,還是sourceinsight比較順手.
可惜sourceinsight太長時間沒有更新了. 現在我一般用sourceinsight,需要看某些SI沒有的用understand.另外好像兩個軟件都不太支持#if (defined(MACRO) || defined(MACRO1))這樣的解析.


導入項目

導入項目有兩種方法,一種是從菜單欄點擊File–>New–>Project,另一種是點擊下面界面中間的New Project

點擊後,會進入到如下界面,你可以更改項目名稱為你要導入的項目名稱,以便於以後查找,你可以直接導入你正在開發的項目,你的代碼更改後,這個項目也會自動更新,方便你快速開發,不需要每次導入。

更改名稱後點擊Next進入如下界面,這個界面是讓你選擇你要導入項目包含了哪幾種語言,註意,在C/C++後面有兩種模式,下面有註釋,其中Strict模式包含Object-C和Object—C++,還有Web的註釋,自己看看就好了,在此就不再解釋,

然後點擊Next進入下面界面:

在此界面點擊上面的“Add a Directory”,也就是添加你要導入項目的路徑,點擊後會彈出如下界面,此時有個奇葩就是彈出的界面會被上圖界面遮擋,此時你要移開該界面,然後會出現下面界面:

點擊後面的帶有三個點的按鈕選擇你要加入的項目文件夾,此處不用打開文件夾,只要點中文件夾點擊open按鈕:

此時只需要點擊OK即可,界面會跳轉到如下界面:

此時有兩個選項,一個是立即分析代碼,一個選擇配置,對於我們來說只需要默認即可,然後點擊OK按鈕,此時軟件開始分析代碼,分析完成後會出現如下界面:

左側會出你的項目結構,中間出現你項目的名稱,此時你可以操作左面項目來查看相關代碼,如下圖所示:

這麽多類和方法如何快速定位,那肯定是搜索,該軟件針對不同位置,不同屬性有不同的搜索方法,下面介紹搜索功能。

搜索功能

1.左側項目結構中搜索:在這個搜索中你可以快速搜索你要查看的類,快捷鍵,鼠標點擊左側上面項目結構窗口,然後按command + F鍵會出現如下圖所示的搜索框,在框中輸入你想要的類回車即可

2.類中方法搜索:將鼠標定位到右側代碼中,點擊command + F,會彈出搜索框,輸入方法回車即可:

3.在文件中搜索:也就是全局搜索,快捷鍵F5或者去上面菜單欄中的search欄中查找,輸入你想要的類或者方法,回車查找,下面會列出所有使用的地方:

4.實體類查找:軟件菜單欄search中最後一項–Find Entity,點擊輸入你要查找的實體類,回車查找:

快速搜索是軟件快速使用必備的技能,包括我們常用的idea一樣,快速定位類,方法,常量等,可以快速幫助我們解決問題。

上面我介紹改軟件時提到可以繪制流程圖等功能,下面就針對這個功能介紹一些一些圖形的繪制功能,幫助你快速分析代碼。

項目視圖

項目視圖包含很多的功能,能夠自動生成各種流程圖結構圖,幫助你快速理清代碼邏輯、結構等,以便快速理解項目流程,快速開發,視圖查看方式有兩種,一種是鼠標點擊你要查看的類或者方法等上面,然後右鍵彈出菜單,鼠標移動到Graphical Views,然後彈出二級菜單,如下圖所示:

另一種方式是點擊要查看的類或者方法,然後找到代碼上面菜單欄中的如下圖標:

然後點擊圖標右下角的下拉箭頭,彈出如下菜單,即可選擇查看相關視圖:

層級關系視圖分類:

1.Butterfly:如果兩個實體間存在關系,就顯示這兩個實體間的調用和被調用關系;如下圖為Activity中的一個方法的關系圖:

2.Calls:展示從你選擇的這個方法開始的整個調用鏈條;

3.Called By:展示了這個實體被哪些代碼調用,這個結構圖是從底部向上看或者從右到左看;

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

5.Contains:展示一個實體中的層級圖,也可以是一個文件,一條連接線讀作”x includes y“;

6.Extended By:展示這個類被哪些類所繼承,

7.Extends:展示這個類繼承自那個類:

結構關系視圖分類:

1.Graph Architecture:展示一個框架節點的結構關系;

2.Declaration:展示一個實體的結構關系,例如:展示參數,則返回類型和被調用函數,對於類,則展示私有成員變量(誰繼承這個類,誰基於這個類)

3.Parent Declaration:展示這個實體在哪裏被聲明了的結構關系;

4.Declaration File:展示所選的文件中所有被定義的實體(例如函數,類型,變量,常量等);

5.Declaration Type:展示組成類型;

6.Class Declaration:展示定義類和父類的成員變量;

7.Data Members:展示類或者方法的組成,或者包含的類型;

8.Control Flow:展示一個實體的控制流程圖或者類似實體類型;

9.Cluster Control Flow:展示一個實體的流程圖或者類似實體類型,這個比上一個更具有交互性;

10.UML Class Diagram:展示這個項目中或者一個文件中定義的類以及與這個類關聯的類

11.UML Sequence Diagram:展示兩個實體之間的時序關系圖;

12.Package:展示給定包名中聲明的所有實體

13.Task:展示一個任務中的參數,調用,實體

14.Rename Declaration:展示實體中被重命名的所有實體

由於視圖比較多,所以就一一貼上代碼,主要還是需要自己去調試,查看各個功能視圖的展示結構以及作用,孰能生巧,多操作幾下就會了,所以不再做過多的解釋。最終希望這款軟件能夠幫助你快速開發,快速閱讀別人的或者自己的代碼。


一、術語 Terminology

Architecture 層級:
An architecture is a hierarchical aggregation of source code units (entities). An architecture can be user created or automatically generated. Architectures need not be complete (that is, an architecture’s flattened expansion need not reference every source entity in the database), nor unique (that is, an architecture’s flattened expansion need not maintain the set property).

層級表示代碼單元(或者實體)組成的層次結構,可以由用戶手動創建,也可由本
軟件自動生成。一個層級可以不完整(例如一個層級的扁平化擴展有可能不會關聯數據庫中的所
有代碼實體),也可能不唯一(扁平化擴展的層級可能不會處理其預設屬性)。

Database 數據庫
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.

代碼經分析後產生的中間結果,以及工程設置保存在數據庫,其缺省擴展名為“.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.

表示源代碼的集合以及相關的配置和參數,工程文件包含源文件清單和工程設置。

Relationship 關聯
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.

互作用的實體之間的關系,關聯的名稱來源於編程語言的語法和語義,例如過程式實體具有“調用”和“被調用”的關聯對象。

Script 腳本
Generally a Perl script. These can be run from within Understand’s GUI, or externally via the “uperl” command. The Understand Perl API provides easy and direct access to all information stored in an Understand database.

通常指perl腳本,腳本可以通過Understand 2.5的圖形用戶界面或者外部的腳本命令執行。Understand Perl API提供了快捷的訪問Understand數據庫所有信息的接口。

parts 部件
下面的圖形展示了一些Understand 圖形用戶界面(GUI) 中常用的部件:
技術分享圖片

常用詞匯

單詞釋義
Macros
Variables變量
Constants常量
Functions函數
Reference引用
Metrics參數
Architectures架構
parameters參數
Call調用
Compiler編譯器
component組件、部件、元件
portability可移植性
Cluster集群
Function Static Variables靜態函數變量
case sensitive區分大小寫
Whole Words Only整詞匹配
layout布局
summary綜述、總論
features特征
control-flow graphs控制流程圖

右鍵菜單

代碼編輯窗口的右鍵菜單提供了很多瀏覽編輯操作的快捷方式,也提供了相關實體的特定信息。

以下介紹了右鍵菜單包含的典型的瀏覽操作(與點擊對象有關)

  • 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 添加書簽活動


Project Configuration

使用菜單欄Project>Configure Project,選擇C++可以打開如下窗口。

技術分享圖片

C++>Option配置頁面包括如下區域:

  • Compiler
    選擇當前工程使用的編譯器或者平臺,編譯器相關的宏定義根據選擇自動設置。需要註意的是,編譯器的某些特性有可能沒有得到很好的支持。

  • Compiler Include Paths
    輸入編譯器使用的頭文件的所在路徑,如%include%。

  • Allow nested comments:>>默認情況下,該選項禁止。打開的狀態下,Understand允許C語言的註釋符(/**/)可以嵌套使用(這種風格被ANSI禁止,但是有一些編譯器支持)。

  • Prepend the names of externally linkable entities with
    使用一個隨意的字符串作為工程中其他語言編寫的代碼中定義的實體的前綴。

  • Append the names of externally linkable entities with
    使用一個隨意的字符串作為工程中其他語言編寫的代碼中定義的實體的後綴。

  • Create implicit special member functions
    源代碼沒有類和結構實體的相關語句時,Understand數據庫自動創建默認構造函數,析構函數和隱式聲明引用,從而為分析時提供相關的引用實體。該選項默認禁止。

  • Create references in inactive code
    如果希望將條件編譯控制的非激活代碼排除在外,需要取消該選項,默認選中。

  • Create references to local objects
    默認情況下,Understand數據庫包含所有局部對象,如果希望不包含函數中聲明的變量需要取消該選項。Understand 2.5的主窗口可以選擇是否需要在HTML報告中包含局部對象。

  • Create references to macros during macro expansion
    選中情況下,數據庫保存宏解析時的引用關系。有時候,該選擇有用。註意,該選項選中導致數據庫增加很多引用關系,會變得很慢。默認關閉。

  • Create references to parameters
    關閉該選項取消參數的引用關系,默認開啟。

  • Save comments associated with entities
    此選項控制代碼實體前後註釋與實體的關聯。

  • Save duplicate references
    默認情況下,引用關系只在數據庫保存一份,選中該選項,會記錄重復的引用關系。

  • Save macro expansion text
    選中該選項的情況下,可以在選中宏的右鍵菜單下選擇Expanded Macro Text來查看宏定義值。

  • Use Include cache
    由於頭文件通常被多個源文件使用,默認情況下,分析階段頭文件都采用高速緩存,這樣能夠加速分析過程,但是需要更多的內存,如果分析過程碰到內存問題,可以將此選項關閉。同時需要註意的是,高速緩存的使用會影響到分析結果。

Entity Filter窗口

技術分享圖片

根過濾器
  • Root Calls
    僅顯示調用而不被調用的實體,如上層代碼(mains),硬件調用的代碼(中斷處理函數)以及啞(不被使用)代碼。

  • Root CallBys
    僅顯示只被調用而不調用其他實體的實體,即最底層的函數。

  • Root IncludeBys
    僅顯示被其他文件包含的文件,即基礎頭文件。

  • Root Classes
    僅顯示不依賴於其他類的類,包括底層類和庫類。

  • Root Decls
    僅顯示最高層的聲明過程(Ada)。

  • Root Withs
    僅顯示被其他單元使用,而不使用其他單元的程序單元(包括包,任務,子程序等)(Ada)。


信息瀏覽器

技術分享圖片
>

信息瀏覽器同步

取消Sync 勾選可以打開多個信息瀏覽器窗口,Sync 勾選的情況下,選中一個實體或者選擇View Information 則會更新當前信息瀏覽器。

選中File Sync 可以保證信息瀏覽器內容始終與激活的代碼編輯器保持同步。
技術分享圖片

引用查看

信息瀏覽器的“References”區域顯示了所有引用選中實體的相關信息:
技術分享圖片

工程瀏覽器

技術分享圖片
>

上下文信息邊欄

技術分享圖片

顯示當前激活的編輯窗口的結構和信息,標簽頁包含了以下信息:

  • Structure Browser
    提供當前文件的擴展範圍列表,列出了文件中函數,頭文件包含,宏定義,類及其他各種結構的名稱。名稱旁邊的圖標指示了實體類型。將鼠標移動到一個條目,彈出顯示實體類型和名稱的活動文本框。使用Ctrl+F 可以在標簽頁範圍內進行查找。

  • File Information
    提供當前文件的信息瀏覽器。

  • Scope Information
    顯示Structure Browser 中選中實體的相關信息。

  • Context Browser
    在左側顯示當前實體在層級結構中的位置,右側顯示當前實體包含的其他實體。文件信息標簽頁右上角的圖標(或者使用Ctrl+,)可以將編輯窗口和CIS 中的文件替換為同目錄下同名但不同擴展名的文件。例如,使用這種方法可以在.p/.cpp 和.h 文件之間快速切換。

右鍵菜單也提供了多種快捷的操作選擇。

大小寫修改

Understand 2.5代碼編輯器支持選中文本進行快速的大小寫修改,方法如下:

  1. 選中代碼中的一個或者多個單詞。
  2. 通過菜單欄Edit>Change Case,或者右鍵菜單中選擇Change Case。
  3. 選擇需要使用的大小寫修改方式,選項包括:
    技術分享圖片

層級結構瀏覽器

層級結構節點(如文件系統目錄節點和本季度修改節點)的右鍵菜單包含了以下一些其他對象的右鍵菜單沒有提供的額外選項:

  • Graphical Views>Dependency Graphs: 顯示層級結構各節點的依賴關系,參見。

  • Metrics Summary:提供選中節點各實體的度量數據,這些度量數據基於當前節點下的實體,不包括子節點中的實體,參見。

  • Metrics Export:將度量總結導出到一個CSV 文件,參見。

  • XML Export:將層級結構中選中節點及子節點包含的實體以XML 格式導出,參見。

  • Edit Architecutre:為用戶自己創建的層級結構打開一個層級結構構建器,Understand
    自動構建的層級結構不能被修改,參見。

  • Rename Architecture:為用戶自己創建的層級結構或者節點打開一個層級結構重命名窗口供用戶對其中名稱進行修改,Understand 2.5 自動構建的層級結構不能被重命名,參見。

  • Duplicate Architecture:打開層級結構復制窗口對選中層級結構的副本進行命名,參見。

  • Manage Architecture:打開層級結構管理窗口,參見。


[1] http://www.cnblogs.com/hackerl/p/5749169.html

[2] http://blog.csdn.NET/a731062834/article/details/50988966

understand軟件使用教程(轉)