Self-Inferencing Reflection Resolution for Java


Yue Li Tian Tan Yulei Sui Jingling Xue


Elf is a static reflection analysis tool for Java introduced in our paper titled "Self-Inferencing Reflection Resolution for Java", ECOOP'14. Together with a pointer analysis, it resolves reflective targets at reflective callsites by exploiting a self-inferencing property inherent in the program. A more sound and controllable reflection analysis could be found here: Solar.

News: From version 0.3, Elf can output its reflection analysis results with the format that is supported by Soot. You can let Soot receive the results of Elf easily by following the instructions in the tutorial.


GPL v3


The tar.gz file includes three files:

NOTICE: The original Elf release came with its "RESOLVE_NEWINSTANCE_BY_CAST" option being disabled by default (in /logic/library/inference.logic) in order to produce a configuration that is consistent with the one used in our paper. This option is now turned on in all the current Elf releases by default in order for Elf to produce more sound results (as more newInstance() calls can be resolved).



The authors wish to thank the Doop team for making Doop available, and LogicBlox Inc. for providing us its Datalog engine.