gpt4 book ai didi

java - 如何检测 Java 字节码中的数组大小 (FindBugs)

转载 作者:搜寻专家 更新时间:2023-11-01 01:58:58 24 4
gpt4 key购买 nike

当然,我想通过查看字节码来了解正在分配的数组的大小,前提是该信息在编译时已知。

背景:我想编写一个 FindBugs 检测器(它查看编译后的字节码)并报告数组分配的某些情况。为了过滤掉误报,我对“小”数组不感兴趣,只对那些大小在编译时不可用或大于可配置阈值的数组感兴趣。

由于 FindBugs 源代码没有过多的文档记录,我正在寻找一些关于如何开始的指示 - 也许已经有一个检测器在做类似的事情,我可以看看。

最佳答案

好吧,如果它们是根据常量分配的,您可以检查在分配之前压入的常量。例如:

class ArraySize {
private static final int smallsize = 10;
private static final int largesize = 1000;
public static void main(String[] args) {
int[] small = new int[smallsize];
int[] big = new int[largesize];
}
}

给出字节码:

Compiled from "ArraySize.java"
class ArraySize extends java.lang.Object{
ArraySize();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return

public static void main(java.lang.String[]);
Code:
0: bipush 10
2: newarray int
4: astore_1
5: sipush 1000
8: newarray int
10: astore_2
11: return

}

关于java - 如何检测 Java 字节码中的数组大小 (FindBugs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/996094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com