ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-05-27 03:47:05  阅读:353  来源: 互联网

标签:java arrays static-analysis bytecode findbugs


我想通过查看字节码来了解正在分配的数组的大小,如果在编译时知道该信息,当然.

背景:我想编写一个FindBugs检测器(查看编译的字节码)并报告某些阵列分配的发生.为了滤除误报,我对“小”数组不感兴趣,只对编程时大小不可用或大于可配置阈值的数组感兴趣.

由于FindBugs的源代码没有太多记录,我正在寻找一些关于如何开始的指针 – 也许已经有一个检测器做了类似我能看到的东西.

解决方法:

这可能会有点棘手.我的知识不完整,但你至少要注意三种说明(NEWARRAY,ANEWARRAY和MULTIANEWARRAY).查看上一条指令(或者在MULTIANEWARRAY的情况下,n先前的指令)获取大小,即使它是常量,也可能加载BIPUSH,SIPUSH或LDC(其他任何东西?),具体取决于大小.正如您所指出的,如果该类是计算的结果,您可能会无限期地追溯指令.

如果我没记错的话,FindBugs会在内部使用BCEL,但我从来没有在那里挖掘过,看看他们究竟有多聪明.如果这些团队中的任何一个拥有适当的邮件列表,他们可能会被证明是一个更好的地方 – 他们可能至少知道某人之前是否已经走过这条路.

标签:java,arrays,static-analysis,bytecode,findbugs
来源: https://codeday.me/bug/20190527/1160591.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有