有没有可以分析c#程序中变量之间依赖关系的工具?

时间:2010-02-07 00:28:17

标签: c# variables refactoring dependencies static-analysis

我们可以使用许多工具来显示模块,源代码文件,类或函数等之间的依赖关系。但似乎没有工具可用于分析变量之间的依赖关系。给定变量的依赖图有助于理解和重构代码。

例如,如果变量b仅用于计算变量c的值,如下所示:

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

也许我们可以删除变量b以使代码更具可读性:

....
c = a + 2;

如果代码非常复杂或有许多难闻的气味,这种重构可能很难。

是否有任何工具可以分析c#或其他编程语言中变量之间的依赖关系?

3 个答案:

答案 0 :(得分:1)

Resharper是分析c#代码的好工具。至少它会显示你未赋值但未使用的未使用的变量和变量。

如果你考虑对代码进行严格的重构,你可以编写单元测试来更加确定你不会破坏某些东西。

答案 1 :(得分:1)

Microsoft Research的{​​{3}}启用了一些非常有趣的工具。我见过的一个演示显示了数据依赖性的突出显示。因此,您可以将鼠标悬停在示例中的“c”上,并且所有有助于该计算的表达式都会被高亮显示。这是一个凤凰的演示,而不是一个完全成熟的开发工具,但很高兴看到它可以完成。 Phoenix是Phoenix Project,因此您可以看到包含哪种示例应用。

答案 2 :(得分:0)

请参阅有关DMS Software Reengineering Toolkit如何(控制和)数据流分析的讨论。这基本上是对信息流的经典编译器分析,其中包括所谓的def-use链。 use-chains显示程序的其他部分如何使用值(特定的赋值)。

这些信息流是作为数据结构计算的,因此它们很容易看到。 (该网页确实显示了图片,但它们被转储到的转储图形结果。要将其作为工具,需要付出更多努力。

我们用它构建了程序切片器,在UI中显示这些信息。它们尚未商业化。

Grammatech为C和Ada做了这样的程序切片,我想。