2010-09-30 79 views

回答

0

這是可能的,因爲它是由幾個IDE(至少對於Java)完成的。無論如何,你可能會有一個部分錯誤的分析。在編譯時確定在派生類中存在方法覆蓋時調用哪些方法是非常困難的。

不,這是不可能的反思。您需要靜態代碼分析來計算耦合度量。

+0

這是真的。在這個階段可能有點太多了。謝謝 – 2010-09-30 01:55:34

2

不,反射是關於類型的,而不是代碼。你可以通過System.Reflection找到任何你想要的東西:類型,屬性,事件和方法。但是方法調用以CIL編碼。反射停在那裏,你得到的只是MethodInfo.GetMethodBody()。

這並沒有阻止一些人;您實際上可以解釋該方法交給您的CIL。 Lutz Roeder和他的令人敬畏的.NET反射器工具讓人眼前一亮。我所知道的.NET框架實際運作的百分之九十,以及我自己如何能夠獲得優勢的知識,都被交給了一張銀牌。這是非常棒的;給這個人一枚獎章。和MSFT跟進Reference Source

+0

嗯,那是我懷疑的。我想知道IL翻譯會有多難。我可以想象,在這個階段對我來說,可能比在這個階段值得付出更多的努力。我已經看到Assembly的一些屬性,這些屬性似乎是關於鏈接的組件,這些屬性可能暗示其他程序集中已經調用過的其他程序集。 – 2010-09-30 01:54:55

+0

這是可行的,但做得比已有的更好,確實很難。有什麼可用*是*好。獲取引用的程序集很簡單,只需使用Assembly.GetReferencedAssemblies()。 – 2010-09-30 02:01:42

-1

你不會說這是代碼還是工具。在代碼中,你需要檢查一個類的CIL。

對於實用程序,您可以嘗試.NET ReflectorNCover(我不確定我是否擁有正確的名稱)。 .NET Reflector有一個插件接口,所以你可以用它做些什麼。

+0

它會作爲一個工具,我只是偶然發現** NDepend **,它似乎能夠做我需要的東西。 – 2010-09-30 02:47:31

+0

這就是我的意思 – pm100 2010-09-30 16:25:38

相關問題