2011-06-13 70 views
3

這是我的第一個堆棧溢出問題,所以如果我沒有正確發佈,或者沒有標記正確或任何內容,請告訴我。拆分.Net代碼文件

對於那些好奇的人來說,這個問題的最後是我爲什麼要這麼做的背景。

我希望有人有一些想法,我可以如何輕鬆地獲取代碼文件,然後從每個數組元素包含該代碼文件中的單個方法的內容獲取一個字符串數組。

我想要做的就是能夠輕鬆地將一個.Net代碼文件解析爲它的獨特方法。從磁盤讀取文件非常簡單 - 解析,以便我有每個方法的單個字符串是我正在尋找更好的方法。我將通過此代碼文件是VB,但理想情況下,我希望看到這與C#也工作。對於VB方面,循環遍歷每一行尋找方法聲明的關鍵字,然後「end sub」和「end function」的下一個實例應該可以工作,但是這不會輕易轉換爲C#。我也無法擺脫這種感覺,必須有更好的方式 - 可能通過反思。

現在的背景:我最近發現,當使用.ShowDialog調用windows窗體時,在完成表單之後不會清理資源 - 您必須專門處理它。這被發現追查我工作的應用程序中的內存泄漏。所以我需要的是跟蹤調用showdialog的每個實例,並且不調用dispose。代碼搜索顯示我有超過300個showdialog實例。通過每一個都是有點乏味的,並且發現表單是否被正確處置。如果我有所有方法的字符串,我可以只搜索包含showdialog的方法而不處理。這會給我非常有針對性的方向,以便清理這些東西,並且給我一個我可以定期運行的工具,並找到任何可能將它引入代碼的地方。

對不起,在這裏冗長的帖子。任何和所有的建議非常感謝。

+0

有你,而不是使用refractoring工具,如DevExpress的快速添加代碼來管理當地人身體不適,如顯示對話考慮?或者我誤解了你的問題。 – pat8719 2011-06-13 20:51:22

+1

有一些工具(Resharper,FxCop)可以爲你做到這一點。會爲你節省大量的工作。 – 2011-06-13 20:52:20

+4

我不認爲你可以在檢查300個ShowDialogs的時間內編寫任何有用的工具。 – 2011-06-13 20:53:22

回答

6

不要這樣做。查看JetBrains的ReSharper或DevExpress的RefactorPro等工具。這些工具旨在突出代碼氣味,例如未定義的資源以及許多其他事物。使用這些工具中的一種將對您更有幫助,並幫助您清理代碼。

+0

你可能是對的。與其他人說,有更好的解決方案。感謝大家的意見。我在這裏是新來的,所以如果我沒有正確地標記這個東西 - 隨時用溼麪條打我,讓我朝正確的方向前進。 – Matt 2011-06-13 21:03:04

1

我相信運行Visual Studio的CodeAnalysis(fka FxCop)會警告你未定義的引用和成員。

0

如果您在visual studio中編寫c#,請嘗試使用右鍵菜單中的「查找所有引用」選項。

如果不工作:

這似乎是一個愚蠢的答案,但你可以寫你自己的lex程序,並通過那裏運行的C#文件。它基本上是一組正則表達式,編譯器用它來檢查你的代碼。我從來沒有在Linux環境以外使用該程序,甚至不知道它是否可能,但我相信它會完全按照你的意願去做。

http://ashimg.tripod.com/Parser.html

http://dinosaur.compilertools.net/lex/index.html

http://tldp.org/HOWTO/Lex-YACC-HOWTO-3.html

0

我發現Dev Express是非常快速和有效這一點。此外,他們還提供免費的基本重新包裝工具以及價值250美元的功能豐富的包裝商。

+0

感謝您的投票,沒有任何評論。看到這是一個完全適合這個問題的產品。 – pat8719 2011-06-17 16:46:06

0

你想解析file--這是很容易的,如果你能處理了草率的工作,但棘手的,如果你想這樣做完全正確

你真正想要的是一個工具,讓你做語義通過您的代碼搜索

其實我已經寫了這樣一個tool--

瀏覽,通過查詢an open source code-querying tool

有一個.NET版本以及一個Java version--瀏覽逐查詢CIL讀取程序集文件而不是源文件,所以它不會不管你使用哪種.NET語言

你想使用該查詢

((含調用方法〜「的ShowDialog」)無(含調用方法〜「處置「))類方法‘System.Windows.Forms.Form中’

你會打幾個嘗試使用它though--

即使它分析了.NET程序集的問題,該工具編寫在Java中,並且由於對.Net版本的需求不足,SourceForge上的編譯版本有點超出了數據庫即

儘管如此,您仍然可以嘗試一下,因爲它確實按照您的要求進行了操作。

給我發一封電子郵件,我可以用最新的.Net版本構建你。

4

您還可以檢查出Telerik的JustCode

http://www.telerik.com/products/justcode.aspx

+2

我也使用JustCode,並且發現使用ReSharper更容易。 – 2011-06-15 01:20:07

+1

我第二次肖恩的迴應 - 對我來說,JustCode比Resharper和CodeRush更快速,更易於使用。 – 2011-06-15 20:42:40