TamiFlex – Taming Reflection in Java Programs

TamiFlex ist unsere Lösung für das gefürchtete "reflection-problem" in statischer Programmanalyse für Java. Mit Hilfe von sog. Reflections können Java Programme Methoden aufrufen und auf Felder und Klassen indirekt zugreifen, indem sie einen String an eine spezielle Methode der Reflections-API weiterreichen.  Diese Strings können zur Laufzeit generiert werden, so dass es unmöglich ist, sie statisch zu analysieren.

TamiFlex löst dieses Problem zu Teil auf "best-effort" Basis: es loggt Informationen über reflektive Aufrufe zur Laufzeit und transformiert anschließend den Programmcode, so dass er nichtreflektive Versionen dieser Aufrufe enthält. Somit können statische Anaylsetools diese Aufrufe in der modifizierten Programmversion "sehen" und es wird eine fundiertere Analyse der Programme ermöglicht. TamiFlex ist auch ein Bestandteil von Soot. Ergebnisse über TamiFlex wurden auf der ICSE 2011 publiziert.