相关疑难解决方法(0)

检测重复代码的工具(Java)

我在一个项目中,以前的程序员一直在复制粘贴代码.这些代码实际上是相同的(或非常相似),它们可以重构为一个.

我花了无数个小时手动重构这些代码,但我认为必须有更好的方法.有些是非常简单的静态方法,可以被移动到祖先类中(但是被以前的初级程序员复制粘贴).

是否有代码分析工具可以检测到这一点并提供报告/建议?如果可能的话,我更喜欢免费/开源工具.

java refactoring code-analysis

46
推荐指数
3
解决办法
3万
查看次数

如何通过类型签名搜索Java API方法?

是否有任何可用的开源工具支持通过参数类型集和返回类型搜索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,它支持通过类型签名搜索功能.

我期待这个工具:

  • 忽略参数的顺序
  • 包括接受'更宽'类型作为参数的方法(例如超类)
  • 包含返回'narrower'类型作为返回值的方法(例如子类)
  • 将'self'值作为实例方法的参数处理(例如'String - > int'将包含String#hashCode)

我知道许多IDE支持搜索获取或返回给定类型的方法,但尚未看到通过参数类型返回类型的组合来缩小搜索范围的工具.

java navigation search static-analysis reference

25
推荐指数
2
解决办法
5492
查看次数