Dot-Net

在 .net 項目中查找未使用的類

  • June 12, 2017

我有一個 VS.NET 2008 項目。是否可以檢查項目中未使用的類?使用 FXcop,我可以找到未使用的變數和未使用的程式碼,但找不到未使用的類。

NDepend工具可以幫助在 .NET 程式碼庫中查找未使用的程式碼。免責聲明:我是這個工具的開發者之一。

詳細說明一下,NDepend 建議在 LINQ 查詢 (CQLinq) 上編寫程式碼規則。提出了大約200 條預設程式碼規則,其中 3 條專用於未使用/死程式碼檢測

基本上這樣的規則來檢測未使用的方法,例如:

// <Name>Dead Methods</Name>
warnif count > 0 
from m in Application.Methods where !m.MethodsCallingMe.Any()
select m

NDepend 規則查找未使用的方法(死方法)

但這條規則很幼稚,會返回微不足道的誤報。在許多情況下,一個方法從未被呼叫但它未被使用(入口點、類建構子、終結器……)這就是為什麼 3 個預設規則更加詳細的原因:

NDepend 集成在 Visual Studio 中,因此可以在 IDE 中檢查/瀏覽/編輯這些規則。該工具還可以集成到您的 CI 流程中,它可以建構報告,顯示違反規則和罪魁禍首程式碼元素。

如果你點擊這三個連結指向這些規則的原始碼,你會發現關於類型和方法的部分有點複雜。這是因為它們不僅檢測未使用的類型和方法,還檢測由未使用的死類型和方法(遞歸)使用的類型和方法。

這是靜態分析,因此規則名稱中的前綴可能是。如果通過反射使用程式碼元素,則這些規則可能會將其視為未使用,但事實並非如此。

除了使用這 3 條規則之外,我還建議通過測試來衡量程式碼覆蓋率並爭取完全覆蓋。通常,您會看到測試無法覆蓋的程式碼實際上是可以安全丟棄的*未使用/死程式碼。*這在不清楚程式碼分支是否可達的複雜算法中特別有用。

引用自:https://stackoverflow.com/questions/2500821