2011-11-29 22 views
8

我們有一個超過10年的ASP.NET網站項目,其中包含大量未使用/遺留的用戶控件和頁面。識別未使用的類/控件/頁面

有沒有一種工具可以幫助識別解決方案的這些元素,所以我們可以重構它們?

我知道這個問題很複雜,因爲並非所有類型都被引用爲編譯器/工具可能識別的類型。例如通過反射實例化的對象使用表示類名稱的字符串實例化。另外,asp.net頁面通常不被引用爲類型,而是作爲標記中的頁面標識符字符串。

它仍然好像有人已經創建了一個工具,它處理這些情況,並創建未使用的類/頁/用戶的候選列表控制

+1

如何使用resharper它會在.cs頁面中找到未使用的方法... –

+0

Resharper擅長尋找未使用的方法,但不能識別未使用的頁面和控件。 –

回答

2

你可以使用這個正則表達式來查找未使用的註冊控件

<%@\s*Register\s+TagPrefix\s*=\s*"(?<tagprefix>[^"]+)"\s+TagName\s*=\s*"(?<tagname>[^"]+)"\s+Src\s*=\s*"[^"]+"\s*%>(?!.*?\k<tagprefix>:\k<tagname>\s+) 

我以前powergrep運行此正則表達式。 應該啓用「Dot matches newline」複選框以正常工作。

+0

看起來很有意思。你能描述它的作用嗎? –

+0

當然。第一部分查找控件註冊模板<%@ Register TagPrefix =「Myprefix」TagName =「Mytag」Src =「〜/ mypath.ascx」%>並收集指定組中的tagprefix標記名**(? blabla>)* *。正則表達式的第二部分使用了負向預測**(?! blabla)**所以我們可以閱讀這個正則表達式:請查找所有控件註冊,這些註冊在本文稍後不再使用。我們的項目也是10歲以上:) – vicneanschi

+0

我用SublimeText來執行此操作。我必須在正則表達式的最開始添加一個內聯標誌來匹配換行符:'(?s)'。見http://stackoverflow.com/questions/11992596/regex-in-sublime-text-match-any-character-including-newlines –

2

ReSharper是重構工具,它可以幫助您識別未使用的類的雲和方法。它也可以安全地刪除它們。它允許你刪除一個方法或類並調整所有的用法。請參閱:Safe delete

它也適當支持ASP.NET。請參閱:ASP.NET support

+0

謝謝 - 我們已經使用了Resharper,但我不認爲它可以識別未使用的頁面和用戶控件。 –

+0

你有沒有試過[找到用法](http://www.jetbrains.com/resharper/webhelp/Navigation_and_Search__Finding_Usages.html)功能。我相信您可以使用它來查找至少未使用的用戶控件。 –

+0

是 - 這對個人命名空間和方法,手動類型的個案的基礎上,但我希望找到一個工具,可以生成一個解決方案寬的報告 –