這篇介紹一下如何使用 NDepend 觀察前一篇文章的程式碼呼叫流向
NDepend 是一套強大的第三方工具,可以用來檢視程式碼的品質,以及提供改善建議。我們這邊只用到它很小部分的功能。你可以在後方連結下載 NDepend 試用版。
安裝好 NDepend 後可以在 Visual Studio 上的選單建立 NDepend project。

接著會跳出對話框設定一些專案的內容,接著按下分析的按鈕:

分析完成後跳出對話框選擇下一個步驟:

選擇 Show NDepend Interactive Graph,然後就會出現相依圖,同時也會使用瀏覽器顯示報告綜覽:
![]() | ![]() |
來觀察一下 MessageProxyLibrary 這個組件,點選 SingleThreadWorker 類別裡的 Call 方法,圖上就會標示出這個方法直接與間接呼叫的流程:

上方圖片就顯示了呼叫 Call 方法的呼叫者來自於 MessageProxy<T> 類別裡的 Invoke 方法;而 Call 方法會呼叫 WorkData 的建構式,並且取得 IsCompleted 和 Result 屬性值。
這樣的分析有一個好處是當處於一個複雜程式碼的時候,可以有效地釐清其呼叫順序與依賴關係。不過我介紹的只是很小很小一部分的功能,這個工具還有其他強大的分析,包含技術債的分析等等,有興趣可以試用看看。