Анализ включения библиотек (include,require)

[Gisma]

Новичок
Анализ включения библиотек (include,require)

Есть большой фреймворк, на нем исполняется некое приложение. Есстественно, оно использует не все библиотеки, а лишь небольшую их часть. Суть проблемы в определении какие библиотеки загружаются какие нет. Библиотеки загружаются с помощью команд include,require. Логично создать подобные функции, но с дополнительными функционалом (запись имени включаемого файла куда-нибудь).
Кроме этого способа есть ли другие пути решения проблемы?
Вообще есть ли в Php-анализаторы для выявления мертвого кода?
 
Re: Анализ включения библиотек (include,require)

Автор оригинала: [Gisma]
Логично создать подобные функции, но с дополнительными функционалом (запись имени включаемого файла куда-нибудь).
get_included_files
 

Wicked

Новичок
Суть проблемы в определении какие библиотеки загружаются какие нет.
Я не совсем понимаю, зачем это нужно. Чтобы подчистить фрэймворк от ненужных файлов? Или так оказалось, что вы просто не слышали про include_once/require_once и пытаетесь создать такой функционал своими руками? Это я так, на всякий случай уточнить :)
 

[Gisma]

Новичок
Имеется громадная библиотека классов и компонент, логично что для конкретных проектов нужны конкретные библиотеки( те которые вызываются) их я их определяю. Отделяю от фреймворка и включаю в результирующий продукт.
 

Wicked

Новичок
А не возникнет ли проблемы из-за того, что исполняя разные сценарии в одном и том же проекте, получатся разные наборы файлов? например, благодаря автолоадерам...
 

[Gisma]

Новичок
они конечно получатся, но для это применим бота который вызовет разные сценарии проекта, для выявления полного дерева библиотек, ну и для многой другой инфы.
 

bgm

 
Столкнувшись однажды с такой проблемой пришли к решению, которое, конечно, требует от программиста педантичности, но достаточно эффективно: каждый файл сценария содержит в самом начале информацию о включаемых файлах, глобальных переменных и т.д. (храним в виде xml-структуры в комментах), которая, когда нужно, собирается с помощью простого рекурсивного парсера в один итоговый xml-файл.
 

[Gisma]

Новичок
нет лучше get_included фреймворк генерит репорт об работе всей системы, и список включенных файлов одна из полезных опций.
 

bgm

 
Gisma
нет лучше get_included фреймворк генерит репорт об работе всей системы, и список включенных файлов одна из полезных опций.
А если файлы включаются по условию?
 

Navarro

Новичок
Хмм, а собственно include чем не подходит?

if ((@include 'FilePath') <> '1'){echo 'FilePath не подгрузился';}

ну и собсно повторюсь get_included_files
 

[Gisma]

Новичок
bgm
я же говорю мы используем используем бота для выявления таких условий. Он конечно не решает абсолютно все, но 80% точно проблем решает, а это уже отлично
 

bgm

&nbsp;
[Gisma]
но 80% точно проблем решает
так ведь надо, чтобы на 100%?
get_included_files и бот хороши в отладке, а для достоверного отчёта на более-менее сложных проектах этого недостаточно - нужно подобие инструментов из компилируемых языков.
 

[Gisma]

Новичок
100 очень трудно достигнуть.
Есть соотношение 80 % на 20 %
80% Процентов работы автоматической. Заметно упрощает работу , и не требует сложных инструментов
- нужно подобие инструментов из компилируемых языков.
А это сложные инструменты. И работа с ними (изучение) или разработка потребуют траты многих ресурсов, а главное, идеал не будет достигнут в любом случае. Так что 20% ручной работы по-моему не так страшно, почти оптимально
 

bgm

&nbsp;
Автор оригинала: [Gisma]
А это сложные инструменты. И работа с ними (изучение) или разработка потребуют траты многих ресурсов
Это совсем не сложные инструменты. И единственный ресурс - это педантичность и аккуратность.

Надо бороться с ленью! :)
 

[Gisma]

Новичок
хм... ну вот таже педантичность и аккуратность и применяется в 20% процентов случаев ....:) Или я чего-то не так понял
 

bgm

&nbsp;
[Gisma]
Или я чего-то не так понял
Ну да, не так понял :) в 100% случаев применяется педантичность и аккуратность: убрал инклюд или переменную - удали строчку в описании, добавил или изменил инклюд (переменную) - обнови описание :) и всё - никаких тебе ботов :)
 
Сверху