Java 语言统计

标签 java parsing

我有兴趣收集一些我可以访问的大型 Java 代码语料库的统计数据。我感兴趣的一些统计数据可能包括某些方法/类的使用频率、某些包的导入频率等等。

我的第一个想法是使用 javaparser ,但该库仅支持 Java 1.5,而我拥有的大部分代码都在 1.6 或更高版本中。

是否有一个库可以从一些 Java 代码中为我提供准确的 AST(即,我可以以某种方式向 javac 请求它吗?),或者是否有更好的方法来解决这个问题(也许是检查字节码)?

最佳答案

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

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

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

关于Java 语言统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26520414/

相关文章:

java - 带有无用堆栈跟踪的异常

java - 将数据填充到 RecyclerView 中

java - 在 Java 中通过 JTextField 获取用户输入?

java - 在Java中,如何检测int值设置为long变量的源

parsing - lalrpop 产生错误 - 无法解析的导入词法分析器

ios - 无法将 -Objcflags添加到 iOS 项目

php - 如何在html中将javascript变量传递给php? (维基百科解析)

Ruby 中的 Java 源代码解析器

java - Spring MVC 示例 Web 应用程序

java - 删除行是数据库