2010-02-07 14 views
5

我們可以使用很多工具來顯示模塊,源代碼文件,類或函數等之間的依賴關係。但似乎沒有用於分析變量之間依賴關係的工具。給定變量的依賴關係圖有助於理解和重構代碼。是否有任何工具可以分析c#程序中變量之間的依賴關係?

例如,如果變量b僅用於計算變量c的值如下:

b = a; 
.... 
c = b + 2; 

或許我們可以除去變量b以使代碼的可讀性:

.... 
c = a + 2; 

如果代碼非常複雜或者有許多不好的氣味,這種類型的代理可能很難。

是否有任何工具可以分析c#或其他編程語言中變量之間的依賴關係?

+1

通過「變量」你的意思是明確「局部變量」,或者你的意思是本地的,正式的參數,數組元素,字段和解除引用的指針?你是否擔心lambda的外部變量?Lambda參數?lambdas中的本地?迭代器塊中的已提取的本地?分析關係任意變量可能相當複雜,比僅僅局部變量複雜得多,特別是當你通過「ref」參數考慮變量鋸齒時。 – 2010-02-07 04:44:11

+0

Eric Lippert:可以分析越多類型的「變量」,代碼的重構工作越容易。當我嘗試重構遺留代碼時,我發現通常有很多複雜的依賴關係。 – askalee 2010-02-07 15:13:57

回答

1

resharper是分析c#代碼的好工具。至少它會向您顯示未使用的變量和您分配值但從未使用過的變量。

如果您考慮認真重構您的代碼,您可以編寫單元測試以確保您不會破壞某些東西。

1

微軟研究院的Phoenix Project啓用了一些非常有趣的工具。我看過的一個演示顯示了數據依賴關係的突出顯示。因此,您可以將鼠標懸停在「c」上,並且所有對此計算有貢獻的表達式都將被高亮顯示。它比一個完全成熟的開發人員工具更像是一個鳳凰的演示,但看到它可以完成,非常酷。菲尼克斯是free download,所以你可以看到什麼樣的應用程序包括在內。

0

查看關於DMS Software Reengineering Toolkit如何進行(控制和)數據流分析的討論。這本質上是經典的信息流編譯器分析,其中包括所謂的def-use鏈。使用鏈顯示程序的其他部分如何消耗一個值(特定的賦值)。

這些信息流被計算爲數據結構,因此它們直接易於查看。 (該網頁不顯示圖片,但他們甩圖結果送入。爲了使這成爲一個工具是更多的努力。

我們已經建立了程序切片與此,這顯示該信息的UI。他們非市售的呢。

Grammatech使得對於C和Ada這樣的程序切片機,我想。

相關問題