正在加载图片...
Table 2.Efficiency comparison (secs) chart eclipse fop hsqldb pmd xalan avrora checkstyle findbugs freecs Average DooP 321779 226254 188 256 718 422 ELF 5496 2821 1765 13631432 932 1463 2281 1259 1930 S0LAR4543107434303269521561701 33551 2256 8489 2880 3638 DOOP [5,18]is a pointer analysis framework for Java programs written in Datalog.Its reflection handling was similar to the reflection analysis in [20]ex- cept that it is done context-sensitively.DooP can now accept the analysis results of TAMIFLEX [22]on a program while analyzing the placeholder library generated by Averroes [27],which presently models only newInstance()and invoke(). ELF [21]represents a recent reflection analysis,implemented in Doop,for Java,by leveraging a so-called self-inferencing property inherent in a program. However,ELF opts to trade soundness for precision by inferring a target at a reflective call if and only if both its signature and declaring class can be in- ferred.Building on this,SoLAR advocates collective inference to improve and even achieve soundness under Assumptions 1-4.facilitated by lazy heap mod- eling for reflective object creation.SOLAR benefits greatly from the open-source code of ELF and DoOP.However,to the best of our knowledge,SoLAR is the most comprehensive analysis in handling the Java reflection API. Wala [17]provides static analysis capabilities for Java and other languages like JavaScript.Its reflection handling is similar to [20](by resolving values of string arguments of reflective calls)but does not handle Field-related methods. 6 Conclusion Achieving soundness in reflection analysis can improve the effectiveness of many clients such as program verifiers,compilers,bug detectors and security analyzers. However,reflection is very challenging to analyze effectively,particularly for reflection-heavy applications.In this paper,we make one significant step forward by introducing a new reflection analysis that can reason about its soundness when certain assumptions are met and produce significantly improved under- approximations than prior art otherwise.We hope that our framework (www. cse.unsw.edu.au/-corg/solar)will be useful in future research. 7 Acknowledgements The authors wish to thank the POPL 2015 and SAS 2015 reviewers for their comments,the Doop team for making Doop available,and LogicBlox Inc. for providing us its Datalog engine.This work is supported by ARC grants, DP130101970 and DP150102109. References 1.O.Lhotak and L.Hendren,"Scaling Java points-to analysis using Spark,"CC'03 2.J.Whaley and M.S.Lam,"Cloning-based context-sensitive pointer alias analysis using binary decision diagrams,"PLDI'04.Table 2. Efficiency comparison (secs). chart eclipse fop hsqldb pmd xalan avrora checkstyle findbugs freecs Average Doop – 321 779 – 226 254 188 256 718 422 – Elf 3434 5496 2821 1765 1363 1432 932 1463 2281 1259 1930 Solar 4543 10743 4303 2695 2156 1701 3551 2256 8489 2880 3638 Doop [5, 18] is a pointer analysis framework for Java programs written in Datalog. Its reflection handling was similar to the reflection analysis in [20] ex￾cept that it is done context-sensitively. Doop can now accept the analysis results of TamiFlex [22] on a program while analyzing the placeholder library generated by Averroes [27], which presently models only newInstance() and invoke(). Elf [21] represents a recent reflection analysis, implemented in Doop, for Java, by leveraging a so-called self-inferencing property inherent in a program. However, Elf opts to trade soundness for precision by inferring a target at a reflective call if and only if both its signature and declaring class can be in￾ferred. Building on this, Solar advocates collective inference to improve and even achieve soundness under Assumptions 1 – 4, facilitated by lazy heap mod￾eling for reflective object creation. Solar benefits greatly from the open-source code of Elf and Doop. However, to the best of our knowledge, Solar is the most comprehensive analysis in handling the Java reflection API. Wala [17] provides static analysis capabilities for Java and other languages like JavaScript. Its reflection handling is similar to [20] (by resolving values of string arguments of reflective calls) but does not handle Field-related methods. 6 Conclusion Achieving soundness in reflection analysis can improve the effectiveness of many clients such as program verifiers, compilers, bug detectors and security analyzers. However, reflection is very challenging to analyze effectively, particularly for reflection-heavy applications. In this paper, we make one significant step forward by introducing a new reflection analysis that can reason about its soundness when certain assumptions are met and produce significantly improved under￾approximations than prior art otherwise. We hope that our framework (www. cse.unsw.edu.au/~corg/solar) will be useful in future research. 7 Acknowledgements The authors wish to thank the POPL 2015 and SAS 2015 reviewers for their comments, the Doop team for making Doop available, and LogicBlox Inc. for providing us its Datalog engine. This work is supported by ARC grants, DP130101970 and DP150102109. References 1. O. Lhot´ak and L. Hendren, “Scaling Java points-to analysis using Spark,” CC ’03. 2. J. Whaley and M. S. Lam, “Cloning-based context-sensitive pointer alias analysis using binary decision diagrams,” PLDI ’04
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有