我正在寻找用于C ++ / Java / C#等语言的重新分解软件,它们提供了有关如何进行重新分解的信息。
他们使用什么方法来检测需要重新分解的代码部分,以及在应用更改时如何保持程序的完整性。如果可能的话,他们使用什么工具。
由于
答案 0 :(得分:1)
如果您想了解重构工具的工作原理,您需要作为基础,从根本上学习编译器的工作原理:解析,符号表构建,各种控制和数据流分析,程序分析,程序转换。重构引擎构建于此之上。
有关工具如何处理特定重构的详细信息往往可以在软件工程研究文献中找到。查看http://scholar.google.com,并使用搜索字词“重构”;你将被埋没在解决各种重构的论文和不同的重构方法中。
关于“为语言列表找到(单个)重构工具的问题?”很难回答。大多数重构工具都很难构建(参见上面的编译器技术讨论),因此您不会看到“一个”工具完成所有工作,而是每个语言/ IDE使用一个工具。特定于语言的工具相对容易找到:谷歌“重构工具语言”。
然而,有一种见解是,进行这种重构任务的机制在摘要中有许多共同的基本技术基础;看我上面的第一段。 遗憾的是,构建大多数重构工具的方法是构建所有重构工具 这种机器只适用于一种特定的重构工具,这有助于解释为什么它们难以构建,因此构建起来很昂贵,因此很少见。它们也是使用传统的编译器技术构建的(例如,传统的解析器[具有导致人们不断抱怨的限制]和程序编程(毕竟,这就是我们自金字塔时代起就采取的方式,对吧?)。名为program transformation engines的工具尝试实例化这种共享的共性,从而分摊在多个任务中构建基线的成本,并以更简单的方式解决构建复杂代码转换的问题,以便更容易实现任务,通过提供非程序手段来表达需要做的事情。
你可以看到example of program transformations applied to Java;来自该示例的消息是相同的转换引擎可用于“重构”其他语言的代码,这是我认为您最初想要询问的内容。 (完全披露:我在示例中的工具背后)。