#java-class #java #class #parser #jvm #classfile

java-signatures

Java 类文件签名解析器

1 个不稳定版本

0.1.0 2024年7月5日

#8#jvm

Download history 99/week @ 2024-07-03 6/week @ 2024-07-10

每月105 次下载

0BSD 许可证

54KB
1K SLoC

java-signatures

一个解析 Java 类/方法/字段签名的解析器,如 类文件格式 所描述,允许访问泛型类型信息。

有几个 rust crates 可以解析 Java 类文件并提供对签名的访问,尽管它们仅作为原始字符串提供。这个小库试图填补这个空白。

状态

所有 OpenJDK 21 的类、方法和字段签名都能正确解析。这意味着将解析形式再次序列化为签名会产生相同的字符串。

在此阶段,库正确地提供了对编码签名数据的结构化访问。虽然避免了解析字符串的副本,但尚未投入精力优化性能。

测试

除了嵌入式单元测试外,test/parse.rs 将获取 test//parse//** 以下的所有 .class 文件,使用 [cafebabe](https://github.com/staktrace/cafebabe) 提取它们的类/方法/字段签名字符串,使用 java-signatures 解析它们,并验证解析的签名是否正确序列回原始形式。为了保持仓库小,我们不会永久托管任何类文件。

替代方案

  • cfsp 项目也提供了解析后的签名。与 java-signatures 不同,解析模型拥有类型信息/名称,因此分配,但可能更容易使用,因为它不会保留对原始解析字符串的引用。

无运行时依赖