Dan*_*ler 4 java arrays static-analysis bytecode findbugs
我想通过查看字节码来了解正在分配的数组的大小,如果在编译时知道该信息,当然.
背景:我想编写一个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];
}
}
Run Code Online (Sandbox Code Playgroud)
给出字节码:
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |