HomeНаука и техникаRelated VideosMore From: Oracle Labs Australia

Jie Liu - Mirror: Static and Dynamic Analysis of Java Reflection

1 ratings | 298 views
Reflection, which is widely used in practice, poses a significant obstacle to program analysis. Reflective calls can be analyzed statically or dynamically. Static analysis can be more sound, but may introduce many false reflective targets and thus sometimes make it unscalable. In contrast, dynamic analysis can be precise, but may miss many true reflective targets due to low code coverage. Jie introduces Mirror, the first automatic reflection analysis for Java that reaps the benefits of both worlds. In it's static analysis, a novel reflection-oriented slicing technique is applied to identify a small number of small path-based slices for a reflective call so that different reflective targets are likely exercised along these different paths. This preserves the soundness of pure static reflection analysis as much as possible, improves its scalability, and reduces substantially its false positive rate. In its dynamic analysis, these slices are executed with automatically generated test cases to report the reflective targets accessed. This significantly improves the code coverage of pure dynamic analysis. Jie discusses how the team evaluated Mirror against a state-of-the-art dynamic reflection analysis tool, Tamiflex, by using a set of 10 large real-world Java applications. Mirror detects 12.5% - 933.3% more reflective targets efficiently (in 362.8 seconds on average) without producing any false positives. These new targets enable 5 - 174949 call-graph edges to be reachable in the application code. With Mirror, more reflective targets can be resolved precisely and quickly, rendering a larger part of the codebase to be visible to many analysis tools such as bug detectors and security analyzers. Bio: Jie liu is a PhD student supervised by Prof. Jingling Xue at School of Computer Science and Engineering, University of New South Wales (UNSW). Jie received his B.Eng degree in Software Engineering from Northwestern Polytechnical University (NPU) in 2014. Before joining UNSW, Jie studied in Fudan University as a postgraduate student from 2014 to 2015. Jie started pursuing his PhD in February 2016. Jie's research interests are program analysis, software engineering and programming languages. Jie Liu - http://www.cse.unsw.edu.au/~jieliu/ Oracle Labs Australia - http://labs.oracle.com/locations/australia
Html code for embedding videos on your blog
Text Comments (0)

Would you like to comment?

Join YouTube for a free account, or sign in if you are already a member.