我们可以使用许多工具来显示模块,源代码文件,类或函数等之间的依赖关系。但似乎没有工具可用于分析变量之间的依赖关系。给定变量的依赖图有助于理解和重构代码。
例如,如果变量b仅用于计算变量c的值,如下所示:
b = a;
....
c = b + 2;
也许我们可以删除变量b以使代码更具可读性:
....
c = a + 2;
如果代码非常复杂或有许多难闻的气味,这种重构可能很难。
是否有任何工具可以分析c#或其他编程语言中变量之间的依赖关系?
答案 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做了这样的程序切片,我想。