我在一个项目中,以前的程序员一直在复制粘贴代码.这些代码实际上是相同的(或非常相似),它们可以重构为一个.
我花了无数个小时手动重构这些代码,但我认为必须有更好的方法.有些是非常简单的静态方法,可以被移动到祖先类中(但是被以前的初级程序员复制粘贴).
是否有代码分析工具可以检测到这一点并提供报告/建议?如果可能的话,我更喜欢免费/开源工具.
是否有任何可用的开源工具支持通过参数类型集和返回类型搜索Java方法?
举个例子,假设我正在寻找一种为int数组生成哈希码的方法.我搜索一个采用int []参数并返回int的方法:
int[] -> int
Run Code Online (Sandbox Code Playgroud)
生产
java.util.Arrays#hashCode(int[])
...
Run Code Online (Sandbox Code Playgroud)
或者我可能想要找到一个方法,它接受一个字符串,并替换字符,并将字符替换为.所以我搜索匹配的方法:
String, char, char -> String
Run Code Online (Sandbox Code Playgroud)
生产
java.lang.String#replace(char, char)
...
Run Code Online (Sandbox Code Playgroud)
理想情况下,我喜欢Java等同于Haskell的Hoogle,它支持通过类型签名搜索功能.
我期待这个工具:
我知道许多IDE支持搜索获取或返回给定类型的方法,但尚未看到通过参数类型和返回类型的组合来缩小搜索范围的工具.