Self-Inferencing Reflection Resolution for Java


Elf is a static reflection analysis tool for Java introduced in our paper titled "Self-Inferencing Reflection Resolution for Java", ECOOP'14. Elf resolves reflection with good soundness, precision and efficiency by exploiting the self-inferencing property inherent in the program. Elf was developed by Yue Li and Tian Tan.

A more sound and controllable reflection analysis can 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.