understand软件使用教程
源代碼閱讀工具(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 層級:層級表示代碼單元(或者實體)組成的層次結構,可以由用戶手動創建,也可由本?
軟件自動生成。一個層級可以不完整(例如一個層級的扁平化擴展有可能不會關聯數據庫中的所?
有代碼實體),也可能不唯一(扁平化擴展的層級可能不會處理其預設屬性)。
代碼經分析后產生的中間結果,以及工程設置保存在數據庫,其缺省擴展名為“.udb”。
Understand 描述的“實體”表示任何包含信息的事物,具體來說,代碼中聲明或?
者使用的標識、包含工程的文件、子程序、變量、源文件都可以被稱為實體。
表示源代碼的集合以及相關的配置和參數,工程文件包含源文件清單和工程設置。
互作用的實體之間的關系,關聯的名稱來源于編程語言的語法和語義,例如過程式實體具有“調用”和“被調用”的關聯對象。
通常指perl腳本,腳本可以通過Understand 2.5的圖形用戶界面或者外部的腳本命令執行。Understand Perl API提供了快捷的訪問Understand數據庫所有信息的接口。
常用詞匯
| 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代碼編輯器支持選中文本進行快速的大小寫修改,方法如下:
層級結構瀏覽器
層級結構節點(如文件系統目錄節點和本季度修改節點)的右鍵菜單包含了以下一些其他對象的右鍵菜單沒有提供的額外選項:
-
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软件使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Epic 喜加二:免费领取《耻辱:界外魔
- 下一篇: pp助手怎么用