Как определить используемые методы сторонней библиотеки в приложении на PHP?
Есть большой проект на PHP, и есть сторонняя библиотека (назовем ее Package), состоящая из нескольких классов, которая используется в этом проекте. Нужно найти, какие именно методы библиотеки используются в приложении для внешних вызовов. Т.е. получить, в итоге список, типа:
\Package\ClassA->methodA1()
\Package\ClassA->methodA2()
\Package\ClassB->methodB1()
Где эти все методы - это методы, вызываемые из приложения при обращении к библиотеке. Внутренние вызовы в самой библиотеке не нужны. Публичные методы, которые есть в библиотеке, но не используются в приложении, тоже не нужны.
В общем, фактически, нужно получить описание интерфейса взаимодействия приложения с библиотекой.
Можно, конечно, в PHPStorm руками пройтись по всем публичным методам всех классов библиотеки, вызывая "Find Usages", но это довольно муторно. Может, есть какой-то инструмент, который поможет эту задачу решить?
Можно попытаться использовать статические анализаторы кода, а можно подключить библиотеку и проанализировать классы и методы в режиме выполнения.
Смотреть тут, т.е. получаешь список зарегистрированных классов get_declared_classes и для каждого по имени запрашиваешь список методов get_class_methods, в догонку то же самое можно сделать с функциями get_defined_functions
И помним, что очень часто разработчики библиотек почему используют динамические имена переменных и методов класса, настроив колбек на undefined method, в этом случае список таких методов узнать автоматически невозможно.
Спасибо, первым делом в эту сторону думал. Но это немного не то, так я могу получить список всех имеющихся методов, а мне нужно получить список используемых методов
И помним, 'совершенно нормально' на php сделать вызов $funcname(); это вызов функции, имя которой в переменной $funcname, это я молчу про всякие eval и прочие.
p.s. собирай статистику вызовов с помощью профилера xdebug