在本文中,您將會了解如何使用 Code Map,將程式碼之間的相依性視覺化。
什麼是 Code Map?
在 Visual Studio 中,Code Map 可協助您更快速地查看程式碼如何搭配運用,而無須閱讀所有檔案和程式碼行。 透過這些對應,您可以看到程式碼中的組織和關聯性,包括其結構和相依性、更新方式,以及預估建議變更的成本。
您可以針對這些語言的程式碼對應相依性:
解決方案或組件中的 Visual C# 或 Visual Basic (
.dll
或
.exe
)
Visual C++ 專案、標頭檔 (
.h
或
#include
) 或二進位檔案中的原生或受控 C 或 C++ 程式碼
由 .NET 模組製作的 Microsoft Dynamics AX X++ 專案和組件
針對 C# 或 Visual Basic 以外的專案,啟動 Code Map 或是將項目加入現有的 Code Map 之選項較少。 例如,您無法以滑鼠右鍵按一下 C++ 專案中 [文字編輯器] 的物件並將它加入 Code Map。 不過,您可以從
方案總管
、
類別檢視
和
物件瀏覽器
拖放個別程式碼元素或檔案。
若要在 Visual Studio 中建立 Code Map,請先
安裝
Code Map
和
Live Dependency Validation
元件
若要建立和編輯 Code Map,您需要
Visual Studio Enterprise 版本
。 不過,在 Visual Studio Community 和 Professional 版本中,您可以開啟在 Enterprise 版本中產生的圖表,但是無法編輯。
在您與使用 Visual Studio Professional 的其他人共用在 Visual Studio Enterprise 中建立的對應時,請確定對應中的所有項目都可見,例如隱藏項目、展開的群組和跨群組連結。
新增 Code Map
您可以建立空白的 Code Map,並將項目拖曳到其中,包括組件參考、檔案和資料夾,也可以為部分或整個解決方案產生 Code Map。
若要新增空白的 Code Map:
在 [方案總管]
中,開啟最上層方案節點的捷徑功能表。 選擇 [新增]
> [新增項目]
。
在 [新增項目]
對話方塊的 [已安裝]
下,選擇 [一般]
類別。
選擇
Directed Graph Document(.dgml)
範本,然後選取 [新增]
。
此範本可能不會依字母順序顯示,因此如果您看不到範本,請向下捲動至範本清單的底部。
有一個空白對應會出現在您解決方案的 [解決方案項目]
資料夾中。
同樣地,您可以選取 [結構]
> [新增 Code Map]
或 [檔案]
> [新增]
> [檔案]
,建立新的 Code Map 檔案,而不將其新增至您的解決方案。
深入了解:
共用程式碼對應
建立 C++ 的 Code Map
改善 Code Map 效能
為您的解決方案產生 Code Map
若要查看解決方案中的所有相依性:
在功能表列上,選擇 [結構]
> [產生解決方案的 Code Map]
。 如果您的程式碼自您上次建置之後未曾變更,您可以改為選取 [結構]
> [產生解決方案的 Code Map 而不建置]
。
對應隨即產生,顯示最上層組件和組件之間的彙總連結。 彙總連結愈廣,代表的相依性就愈高。
使用 Code Map 工具列上的 [圖例]
按鈕以顯示或隱藏專案類型圖示清單 (例如測試、Web 和 Phone 專案),程式碼項目 (例如類別、方法和屬性),和關聯性類型 (例如「繼承自」、「實作」,和「呼叫」)。
此範例方案包含方案資料夾 ([測試]
和 [元件]
)、測試專案、Web 專案和組件。 所有內含項目關聯性預設會顯示為
「群組」
(group),您可將其展開及摺疊。 [外部]
群組中含有在您的方案之外的任何項目,包括平台相依性。 外部組件只會顯示所使用的項目。 根據預設,系統基底類型在對應中會隱藏,以減少雜亂。
若要向下切入到對應,請展開代表專案和組件的群組。 您可以藉由按下
CTRL + A
選取所有節點,然後從捷徑功能表選擇 [群組]
、[展開]
,展開所有項目。
不過,這可能不適用於大型的方案。 事實上,對於複雜的方案而言,記憶體限制可能會導致您無法展開所有群組。 相反地,若要查看個別節點的內部,請展開它。 將滑鼠指標移至節點上方,然後按一下出現的>形箭號 (向下箭號)。
或使用鍵盤選取項目,然後按下加號鍵 (
+
)。 若要瀏覽更深層的程式碼,請為命名空間、類型和成員執行相同的作業。
如需使用滑鼠、鍵盤和觸控處理 Code Map 的詳細資訊,請參閱
瀏覽和重新排列 Code Map
。
若要簡化對應,並將焦點放在個別部分,請選擇 Code Map 工具列上的 [篩選]
,然後只選取您感興趣的節點和連結類型。 例如,您可以隱藏所有的方案資料夾和組件容器。
您也可以隱藏或移除對應上的個別群組和項目來簡化對應,而不會影響基礎的方案程式碼。
若要查看項目之間的關聯性,請在對應中加以選取。 連結的色彩表示關聯性的類型,如 [圖例]
窗格中所示。
在此範例中,紫色連結是呼叫、虛線的連結是參考,而淺藍色連結則是欄位存取。 綠色的連結可以是繼承,或者可以是
「彙總連結」
(aggregate link),表示多個關聯性類型 (或
「分類」
(category))。
如果看到綠色連結,可能不表示只有繼承關聯性。 也有可能是方法呼叫,但是繼承關聯性將其隱藏。 若要查看特定類型的連結,請使用 [篩選]
窗格中的核取方塊,隱藏您不感興趣的類型。
若要取得項目或連結的詳細資訊,請將指標移到頂端,直到出現工具提示。 這會顯示程式碼項目或連結代表的類別分類的詳細資料。
若要檢查彙總連結代表的項目和相依性,請先選取連結,然後開啟其捷徑功能表。 選擇 [顯示參與連結]
(或 [在新 Code Map 上顯示參與連結]
)。 這會展開在連結兩端的群組,並只顯示參與此連結的項目和相依性。
若要將焦點放在對應的特定部分,您可以繼續移除您不感興趣的項目。 例如,若要向下鑽研到類別和成員檢視,只要篩選 [篩選]
窗格中的所有命名空間節點。
專注於複雜方案對應的另一個方法是產生新的對應,其中包含來自現有對應的選取項目。 選取您想要專注的項目時按住
Ctrl
,開啟捷徑功能表,然後選擇 [從選取範圍新增圖形]
。
包含的內容會轉至新的對應。 使用 [篩選]
窗格隱藏方案資料夾和您不想查看的其他容器。
展開群組,然後選取對應中的項目以檢視關聯性。
另請參閱:
瀏覽和重新排列 Code Map
藉由編輯 DGML 檔案自訂 Code Map
執行分析器
找出程式碼中的潛在問題
檢視相依性
假設您有要在出現暫止變更的某些檔案中,執行程式碼檢閱。 若要查看這些變更中的相依性,您可以從那些檔案建立 Code Map。
在
方案總管
中,選取您要對應的專案、組件參考、資料夾、檔案、類型或成員。
在
[方案總管]
工具列上,選擇
[在 Code Map 上顯示]
。 或針對一個或一組項目開啟捷徑功能表,然後選擇 [在 Code Map 上顯示]
。
您也可以從 [方案總管]
、[類別檢視]
或 [物件瀏覽器]
將項目拖曳至
新的
或現有的 Code Map。 若要包含項目的父階層,請按住
Ctrl
鍵不放同時拖曳項目,或使用 Code Map 工具列上的 [包含父代]
按鈕,指定預設動作。 您也可以從 Visual Studio 外部拖曳組件檔,例如從
Windows 檔案總管
。
當您從跨多個應用程式 (如 Windows Phone 或 Microsoft Store) 共用的專案中加入項目時,這些項目會與目前作用中的應用程式專案出現在對應上。 如果您將內容變更為其他應用程式專案,並且從共用專案加入更多項目,這些項目現在會與新的作用中應用程式專案一起顯示。 您使用對應中項目執行的作業僅適用於共用相同內容的項目。
對應會在其包含的組件內顯示選取的項目。
若要瀏覽項目,請將其展開。 將滑鼠指標移至項目上方,然後按一下出現的>形箭號 (向下箭號) 圖示。
若要展開所有項目,請使用
Ctrl
+
A
進行選取,然後開啟對應的捷徑功能表並選擇 [群組]
> [展開]
。 不過,如果展開所有群組會產生無法使用的對應或記憶體問題,則無法使用此選項。
繼續展開您感興趣的項目,視需要可一直到類別和成員層級。
若要查看在程式碼中,但不會出現在對應上的成員,請按一下群組左上角的 [重新擷取子系]
圖示
。
若要查看與對應上之項目相關的其他項目,請選取一個,在 Code Map 工具列上選擇 [顯示相關]
,然後選取要加入對應的相關項目類型。 或者,選取一或多個項目,開啟捷徑功能表,然後針對要加入對應的相關項目類型選擇 [顯示]
選項。 例如:
對於
組件
,選擇: