2009-08-25 88 views
2

有沒有任何工具可以找到沒有任何引用的私人功能? (冗餘功能)冗餘代碼檢查

原因是,一個函數可能已經創建並從幾個區域調用,但隨着項目的擴展和增長,這兩個調用可能已被刪除並與更好的替代交換。但該方法可能仍然存在。我想知道是否有任何方便的工具可以查看代碼,發現私有函數並檢查它們是否有任何引用,如果沒有,則通知用戶這種情況。

創建一個我自己不會太棘手,但我想知道是否有任何可訪問的應用程序可以使用包含代碼的文件執行此操作?

我的代碼在c#中,但我可以想象這個問題涵蓋了各種編碼語言。

+1

重複的http://stackoverflow.com/questions/614096/clean-up-unwanted-code-c/935943 – 2009-08-25 13:22:21

回答

2

如果你的代碼有單元測試(它是的,對吧; ;-)然後運行NCover將允許你識別從任何地方都不被調用的方法。如果你沒有任何單元測試,那麼使用它開始構建它們是一個很好的藉口。

在一般情況下,我懷疑代碼覆蓋工具適合於大多數語言。

+0

會同意你對此,但我最近也開始了一個項目與0測試,但也希望刪除這樣的「死碼」。這樣做會減少我開始編寫測試的代碼量! – MPritchard 2009-08-25 12:59:14

+0

@Martin - 沒有測試; ouchies!如果您開始爲公共方法編寫單元測試,可能會使未調用的私有方法設置得足夠小,以至於您可以使用Visual Studio的搜索來檢查它們是否被調用。這就是說,我完全知道*你從哪裏來的! :) – Rob 2009-08-25 13:03:47

+0

我的項目中也沒有單元測試,可能是因爲它是SharePoint,但:--D。 – Colin 2009-08-25 13:19:41

0

Eclipse爲Java自動執行它,不知道你是否可以爲C#做同樣的事情。

0

另一個問題甚至可能是「c#編譯器是否刪除了實際未使用的私有方法?」。

我的猜測是否定的,但你永遠不知道!

編輯:

其實,我覺得這可能是很難說在使用的方法。它可能是私有的,但它仍然可以用作事件處理程序。不是不可能檢查,但我相信這方面會使它更難一點。

+2

編譯器刪除未使用的方法(私有或其他方法)會是一件「壞事」(tm),因爲它們仍然可以通過Reflection訪問和調用。事實上,我相信VS單元測試框架生成的代碼完全可以讓你單元測試私有/內部方法。 – Rob 2009-08-25 13:01:58

3

ReSharper完成這項工作。

+0

如果您告訴人們如何 – MPritchard 2009-08-26 08:33:53

+0

ReSharper標記任何未被調用的私人功能,將會有所幫助: * VS代碼窗口右側的黃色標記。 *方法名稱變灰。 *如果光標位於功能名稱上,則爲紅色燈泡。 ALT + RETURN提供「刪除未使用的方法」。而已 – 2009-08-26 11:12:31