c代碼自動生成類圖 uml understand

Understand: 靜態代碼分析神器_scitools understand-CSDN博客

一直以來,我以爲Source Insight的代碼分析已經是業界最強、最專業。今天試用了一下Scitools的Understand,導入代碼後直接可以生成圖形化分析結果,包括模塊間調用,函數調用流程等,確實比較震撼。

 

 

1. 設置

1.設置字體和顏色風格
修改默認字體: Preference → Editor → Default style

“SourceCodePro Nerd Font Mono” 13

修改顏色: Preference → Editor → Styles

Predefined選爲"onyx"

Preference → General → Application Font

“SourceCodePro Nerd Font Mono” 12

Preference → User Interface → Command Window Font

“SourceCodePro Nerd Font Mono” 10

2. 導入項目

new → project, 輸入項目名稱(linux-latest), understand的項目數據庫(之前的目錄)
在這裏插入圖片描述

1.語言選擇
Assembly、C/C++、Python、Web

注: 其中Strict模式包含Object-C和Object—C++,還有Web的註釋
在這裏插入圖片描述

2.導入文件和設置, 這裏選第一個
在這裏插入圖片描述

3.添加目錄和文件, 這裏添加目錄
在這裏插入圖片描述
在這裏插入圖片描述
4.代碼分析
有兩個選項,一個是立即分析代碼,一個選擇配置,對於我們來說只需要默認即可,然後點擊OK按鈕,此時軟件開始分析代碼
在這裏插入圖片描述

3. 主要功能

3.1. 代碼知識

理解爲您提供有關您的代碼的相關信息。快速查看關於函數,類,變量等的所有信息,如何使用,調用,修改和交互。輕鬆查看您想要了解代碼的呼叫樹,指標,參考信息和任何其他信息。
在這裏插入圖片描述

3.2. 指標和報告

理解非常有效地收集有關代碼的度量標準併爲您提供不同的查看方式。當我們沒有完全滿足您的需求時,可以快速獲得大量標準指標以及編寫您自己的自定義指標的選項。
在這裏插入圖片描述

3.3. 製圖

瞭解提供圖表,使您可以查看代碼連接(依賴關係),流程如何(控制流程圖),使用哪些函數調用其他函數(調用圖表)等等。有許多自定義選項可輕鬆讓您僅顯示您感興趣的內容,因此該圖最適合您的需求。
在這裏插入圖片描述

3.4. 標準測試

理解提供了一種使用已發佈的編碼標準或您自己的自定義標準來檢查代碼的方法。這些檢查可用於驗證命名準則,度量標準要求,已發佈的最佳做法或對您的團隊而言重要的任何其他規則或約定。
在這裏插入圖片描述

3.5. 依賴性分析

查看代碼中的所有依賴關係以及它們如何連接。使用Understanding的交互式圖形或使用文本依賴瀏覽器查看這些依賴關係。兩者都可以讓您快速輕鬆地查看所有依賴關係,或者深入瞭解詳細信息。
在這裏插入圖片描述

3.6. 編輯

在這裏插入圖片描述

3.7. 搜索

在“理解”中搜索有多個選項。要獲得即時結果,請使用我們的“即時搜索”功能,該功能可在打字完成之前提供結果。瞭解還提供更多自定義和複雜搜索的搜索選項,例如正則表達式和通配符搜索。
在這裏插入圖片描述

3.8. 語言

瞭解支持十幾種語言,並且可以處理以多種語言編寫的代碼庫。這允許您查看語言之間的調用和依賴關係,以便您可以獲取有關完整系統的信息。
在這裏插入圖片描述

4. 搜索功能

1.搜索文件: 在這個搜索中你可以快速搜索你要查看的文件,
1.快捷鍵,鼠標點擊左側上面項目結構窗口,然後按command + F鍵會出現如下圖所示的搜索框,在框中輸入你想要的類回車即可
在這裏插入圖片描述
2.在打開的文件中搜索: 將鼠標定位到右側代碼中,點擊command + F,會彈出搜索框,輸入方法回車即可:
在這裏插入圖片描述

3.全局搜索: 快捷鍵F5或者去上面菜單欄中的search欄中查找
在這裏插入圖片描述
4.實體搜索: 菜單欄的find entity, 根據結構體、方法等搜索
在這裏插入圖片描述

5. 項目視圖

項目視圖包含很多的功能,能夠自動生成各種流程圖結構圖,幫助你快速理清代碼邏輯、結構等,以便快速理解項目流程,快速開發.

視圖查看方式有兩種,

一種是鼠標點擊你要查看的類或者方法等上面,然後右鍵彈出菜單,鼠標移動到Graphical Views,然後彈出二級菜單,如下圖所示:
在這裏插入圖片描述
另一種方式是點擊要查看的類或者方法,然後找到代碼上面菜單欄中的如下圖標:
在這裏插入圖片描述
然後點擊圖標右下角的下拉箭頭,彈出如下菜單,即可選擇查看相關視圖:

5.1. 層級關係視圖分類

1.Butterfly:如果兩個實體間存在關係,就顯示這兩個實體間的調用和被調用關係;
如下圖爲Activity中的一個方法的關係圖:
在這裏插入圖片描述
2.Calls:展示從你選擇的這個方法開始的整個調用鏈條;
3.Called By:展示了這個實體被哪些代碼調用,這個結構圖是從底部向上看或者從右到左看;
在這裏插入圖片描述
4.Calls Relationship/Calledby Relationship:展示了兩個實體之間的調用和被調用關係,操作方法:首先右鍵你要選擇的第一個實體,然後點擊另一個你要選擇的實體,如果選擇錯誤,可以再次點擊其他正確即可,然後點擊ok;
在這裏插入圖片描述
在這裏插入圖片描述
5.Contains:展示一個實體中的層級圖,也可以是一個文件,一條連接線讀作”x includes y“;
在這裏插入圖片描述
6.Extended By:展示這個類被哪些類所繼承,
在這裏插入圖片描述
7.Extends:展示這個類繼承自那個類:
在這裏插入圖片描述

5.2. 結構關係視圖分類

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:展示實體中被重命名的所有實體

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

6. 術語 Terminology

6.1. 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).

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

6.2. 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”。

6.3. 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 描述的“實體”表示任何包含信息的事物,具體來說,代碼中聲明或 者使用的標識、包含工程的文件、子程序、變量、源文件都可以被稱爲實體。

6.4. 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.

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

6.5. 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.

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

6.6. 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數據庫所有信息的接口。

6.7. parts 部件

下面的圖形展示了一些Understand 圖形用戶界面(GUI) 中常用的部件:

在這裏插入圖片描述

7. 常用詞彙

在這裏插入圖片描述

8. 右鍵菜單

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

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

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

9. 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:

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

10. Entity Filter窗口

在這裏插入圖片描述

根過濾器

Root Calls:

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

Root CallBys:

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

Root IncludeBys:

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

Root Classes:

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

Root Decls:

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

Root Withs:

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

11. 信息瀏覽器

在這裏插入圖片描述

信息瀏覽器同步

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

選中File Sync 可以保證信息瀏覽器內容始終與激活的代碼編輯器保持同步。
在這裏插入圖片描述

12. 引用查看

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

在這裏插入圖片描述

13. 工程瀏覽器

在這裏插入圖片描述

14. 上下文信息邊欄

在這裏插入圖片描述

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

15. Structure Browser

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

File Information

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

Scope Information

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

Context Browser

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

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

16. 大小寫修改

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

  • 1.選中代碼中的一個或者多個單詞。
  • 2.通過菜單欄Edit>Change Case,或者右鍵菜單中選擇Change Case。
  • 3.選擇需要使用的大小寫修改方式,選項包括:
    在這裏插入圖片描述

17. 層級結構瀏覽器

在這裏插入圖片描述
在這裏插入圖片描述

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

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

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

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

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

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章