Self-Inferencing Reflection Resolution for Java

Authors

Yue Li Tian Tan Yulei Sui Jingling Xue

Description

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.

License

GPL v3

Downloads

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).

Artifact

Acknowledgements

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