2

我想知道是否有一种工具可以识别 JAVA 源代码中的内聚代码块。例如,如果我有一个很长的方法,我想从中提取另一个方法 - 是否有任何工具可以自动告诉我值得提取的大量代码?

4

5 回答 5

1

Google CodePro Analytics有一个 Eclipse 插件,它可以提供一堆统计数据,例如代码行数和圈复杂度,这些数据可以很好地指示方法应该被重构。

我认为您不会找到可以自动将“内聚”代码块重构为方法的工具。这里面有太多的主观性。

于 2012-10-11T19:09:34.203 回答
1

有像PMD (for eclipse) & FindBugs等插件,可以进行静态代码审查,根据您配置的规则标记代码。

于 2012-10-11T18:35:11.323 回答
1

我在另一个问题上寻找了一个类似的工具:https ://stackoverflow.com/questions/12016289/tool-for-visualizing-dependencies-inside-a-java-class只是在更高的级别:一个类。

我认为同样的答案也适用:没有那样的东西。虽然有一些工具可以提供信息,您可以从中提取您正在寻找的信息。

我会调查DependencyFinder。它提供对所有代码片段的访问,因此您可以找到访问一组通用变量的代码元素集群。不幸的是,我发现 API 有点混乱并且没有很好的文档记录,所以你需要尝试和错误或与作者联系。我认为它也可能不会让您访问空白。但无论如何,我认为这不是一种有效的方法。

您可能想要研究的另一个工具是JaMoPP 它甚至应该包含有关空格的信息。虽然它是一个 Java 插件,但您可以使用独立于 eclipse 的底层库(我认为)。

于 2012-10-12T06:10:10.230 回答
0

查看Sonar它对查找重复代码块有很好的支持。

Sonar 使用 PMD 和 FindBugs 底层。它还生成一些自定义指标,例如类复杂性、方法复杂性,这些指标指向太大的类/方法,并且可能被分解。

于 2012-10-11T18:36:34.630 回答
0

控制块(即条件和循环)是“内聚的”,因为您不能轻易地提取跨越控制块边界的代码块。查找可以被方法调用替换的块,这使得原始方法更容易理解。通过提取最深的控制流嵌套区域,您将对复杂性产生最佳影响,因此这是一个很好的起点。你不需要这样的工具——代码本身就有你需要的信息。

于 2012-10-12T05:48:50.487 回答