Dynamic languages include a number of features that are challenging to model properly in static analysis tools. In PHP, one of these features is the include expression, where an arbitrary expression provides the path of the file to include at runtime. In this paper we present two complementary analyses for statically resolving PHP includes, one that works at the level of individual PHP files and one targeting PHP programs, possibly consisting of multiple scripts. To evaluate the effectiveness of these analyses we have applied the first to a corpus of 20 open-source systems, totaling more than 4.5 million lines of PHP, and the second to a number of programs from a subset of these systems. Our results show that, in many cases, includes can be either resolved to a specific file or a small subset of possible files, enabling better IDE features and more advanced program analysis tools for PHP.
International Conference on Automated Software Engineering
Software Analysis and Transformation

Hills, M.A, Klint, P, & Vinju, J.J. (2014). Static, Lightweight Includes Resolution for PHP. In Proceedings of International Conference on Automated Software Engineering 2014 (ASE 29). IEEE.