Java语言统计

Ale*_*ing 5 java parsing

我有兴趣收集一些我可以访问的大量Java代码的统计信息.我感兴趣的一些统计数据可能包括使用某些方法/类的频率,某些包的导入频率等等.

我的第一个想法是使用javaparser,但该库只支持Java 1.5,我的大多数代码都是1.6或更高.

有没有一个库可以从一些Java代码中给我一个准确的AST(也就是说,我能以某种方式问javac吗?),还是有更好的方法来解决这个问题(也许是检查字节码)?

kes*_*lam 0

不知道准确的 AST,但您当然可以使用 ASM 或 BCEL 等包读取字节码,并且扫描这些数据结构以进行函数调用将相当简单。当然,这可能是在执行了一些早期优化之后,所以它可能不会直接反映源代码......而且它是在 JIT 之前,所以它可能不会直接反映实际运行的内容。

另一种解决方案是在探查器的控制下运行代码,这可以为您提供从不同位置调用的相对或绝对频率。

这些都不会给你导入的数量——这纯粹是一个语法糖细节。但出于同样的原因,我认为这实际上并不是一个有意义的数字。