正在加载图片...
7:4 Yue Li,Tian Tan,and Jingling Xue ---2-.Unknown Soundness Boundary Achieved Soundness Known Soundness Boundary Identified Unsoundness (a)Previous Reflection Analysis (b)SoLAR:Soundness-Guided Reflection Analysis Fig.1.Reflection analysis:prior work vs.SoLAR. We have implemented SoLAR in Doop [8](a state-of-the-art pointer analysis tool for Java) and released it as an open-source tool.In particular,SoLAR can output its reflection analysis results with the format that is supported by Soor [63](a popular framework for analyzing Java and Android applications),allowing Soor's clients to use SoLAR's results directly. We conduct extensive experiments on evaluating SoLAR's effectiveness with large Java applications and libraries.Our experimental results provide convincing evidence on the ability of SoLAR in analyzing Java reflection effectively,in practice. 1.4 Organization The rest of this paper is organized as follows.We will start by providing a comprehensive under- standing of Java reflection in Section 2.Building on this understanding,we give an overview of SoLAR in Section 3 and introduce its underlying methodology in Section 4.Then,we formalize SoLAR in Section 5,describe its implementation in Section 6,and evaluate its effectiveness in Section 7.Finally,we discuss the related work in Section 8 and conclude in Section 9. 2 UNDERSTANDING JAVA REFLECTION Java reflection is a useful but complex language feature.To gain a deep understanding about Java reflection,we examine it in three steps.First,we describe what Java reflection is,why we need it,and how it is proposed(Section 2.1).Second,we explain how Java reflection is designed to be used,i.e,its API(Section 2.2).Finally,we investigate comprehensively how it has been used in real-world Java applications(Section 2.3).After reading this section,the readers are expected to develop a whole picture about the basic mechanism behind Java reflection,understand its core API design,and capture the key insights needed for developing practical reflection analysis tools. 2.1 Concept Reflection,which has long been studied in philosophy,represents one kind of human abilities for introspecting and learning their nature.Accordingly,a(non-human)object can also be endowed with the capability of such self-awareness.This arises naturally in artificial intelligence:"Here I am walking into a dark room.Since I cannot see anything,I should turn on the light".As explained in [54],"such thought fragment reveals a self-awareness of behaviour and state,one that leads to a ACM Trans.Softw.Eng.Methodol.,Vol.28,No.2,Article 7.Publication date:February 2019.7:4 Yue Li, Tian Tan, and Jingling Xue Previous Reflection Analysis ? (a) (b) SOLAR: Soundness-Guided Reflection Analysis Achieved Soundness Identified Unsoundness ? Unknown Soundness Boundary Known Soundness Boundary Fig. 1. Reflection analysis: prior work vs. Solar. • We have implemented Solar in Doop [8] (a state-of-the-art pointer analysis tool for Java) and released it as an open-source tool. In particular, Solar can output its reflection analysis results with the format that is supported by Soot [63] (a popular framework for analyzing Java and Android applications), allowing Soot’s clients to use Solar’s results directly. • We conduct extensive experiments on evaluating Solar’s effectiveness with large Java applications and libraries. Our experimental results provide convincing evidence on the ability of Solar in analyzing Java reflection effectively, in practice. 1.4 Organization The rest of this paper is organized as follows. We will start by providing a comprehensive under￾standing of Java reflection in Section 2. Building on this understanding, we give an overview of Solar in Section 3 and introduce its underlying methodology in Section 4. Then, we formalize Solar in Section 5, describe its implementation in Section 6, and evaluate its effectiveness in Section 7. Finally, we discuss the related work in Section 8 and conclude in Section 9. 2 UNDERSTANDING JAVA REFLECTION Java reflection is a useful but complex language feature. To gain a deep understanding about Java reflection, we examine it in three steps. First, we describe what Java reflection is, why we need it, and how it is proposed (Section 2.1). Second, we explain how Java reflection is designed to be used, i.e., its API (Section 2.2). Finally, we investigate comprehensively how it has been used in real-world Java applications (Section 2.3). After reading this section, the readers are expected to develop a whole picture about the basic mechanism behind Java reflection, understand its core API design, and capture the key insights needed for developing practical reflection analysis tools. 2.1 Concept Reflection, which has long been studied in philosophy, represents one kind of human abilities for introspecting and learning their nature. Accordingly, a (non-human) object can also be endowed with the capability of such self-awareness. This arises naturally in artificial intelligence: “Here I am walking into a dark room. Since I cannot see anything, I should turn on the light". As explained in [54], “such thought fragment reveals a self-awareness of behaviour and state, one that leads to a ACM Trans. Softw. Eng. Methodol., Vol. 28, No. 2, Article 7. Publication date: February 2019
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有