2009-03-05 84 views
6

我在Visual Studio 2005中得到了一個C#應用程序。 代碼有300多KLOC,這已經被濫用了3年。清理不需要的代碼C#

當我通過代碼發現了很多未使用的函數/方法/屬性。它不可能手動清理代碼(需要檢查每個成員,如果發現沒有引用刪除它)

我期待通過VS宏自動執行此過程,它將遍歷代碼中的每個成員,如果它沒有任何引用它應該刪除它,如果找到任何引用,檢查它的調用成員的引用,如果調用成員,沒有任何引用,它應該刪除這兩個等等。

我相信有人會提前破解它。

+1

希望應用程序不使用反射來調用方法。 – kenny 2009-06-01 18:00:20

回答

13

Resharper有一個乾淨的代碼功能,並提供了很好的指示哪些方法/類沒有被使用。

+0

我不確定它是否是自動的,但Resharper指出一個方法是否有任何引用。 – 2009-03-05 09:42:49

4

您可以使用CQL查詢您的代碼庫NDepend以找出哪些方法和類未被使用。

+0

NDepend通過向您提供有關最常用類型,類型之間的依賴關係,直接和間接依賴關係,測量類型和方法的複雜性等信息,幫助您進一步瞭解代碼庫。 – flq 2009-03-05 10:13:51

0

第一次使用重新銳利,如其他建議。

Resharper假定公共方法被某個外部程序集使用,即使它們不是,所以搜索並用「private」替換「public」並重新編譯。

4

小心通過反射調用的代碼。許多重構工具會將這些代碼標記爲實際上未被訪問。

最安全的是在重構之前和之後運行你的單元測試(你確實有這些東西?),以確保一切仍然有效。

0

我已使用Gendarme(如FxCop)來確定哪些代碼未被調用。 AFAIK它不能自動化,但至少你不需要一條線。