Подтвердить что ты не робот

Эффективно собирает информацию о внутренней работе нового проекта PHP. Инструменты? Методы? Сценарии?

Я скоро присоединяюсь к проекту PHP, который был разработан в течение нескольких лет. Это будет огромным, редко документированным, много файлов, груды кода, не ожидается никакого качественного уровня.

Как вы собираетесь собирать как можно больше информации о том, что происходит?

  • Автозагрузка не ожидается, на по крайней мере, не inclued может сделать хорошую работу раскрывая взаимозависимости.

  • phpDocumentor переварить файлы проекта могут дать представление о каких классах/методах/функциях присутствуют.

  • Возможно phpCallGraph для отношения метода/функции.

  • Профилирование некоторых общих случаев использования с XDebug, чтобы получить представление о иерархии и понятия.

  • Проверка важных лог файлов... проверка предупреждений, устаревших обычаях, ошибках.

  • phpinfo().

  • Возможно, извлечение всех комментариев и обрабатывать их в html файл.

Не покрывал Unit-Tests, Databases,....

Что бы вы сделали? Каковы ваши опыты с упомянутыми инструментами, чтобы максимально использовать их?

Вы можете принять любое условие.

Какая статистическая информация может быть полезна для извлечения?

Есть ли у кого-нибудь опыт работы с этими инструментами?

ИЗМЕНИТЬ из "Инструменты PHP для проверки качества" :

ИЗМЕНИТЬ 2 от ответа Брайана Уотерса:

Настройка цикла развертывания/сборки/CI для проектов PHP - предложена Пеккой

РЕДАКТИРОВАТЬ 3

Просто нашел это PDF беседы Габриэле Сантини - "Статистический анализ кода - Прослушайте свой PHP-код". Это похоже на золотую жилу.

4b9b3361

Ответ 1

Я согласен, что ваш вопрос действительно содержит большинство ответов.

Это то, что я, вероятно, сделаю. Я, вероятно, начинал бы с инструментов Себастьяна Бергмана, особенно phploc, чтобы вы могли получить представление о масштабах беспорядка (codebase), который вы смотрите. Он дает вам класс, количество функций и т.д., А не только строки кода.

Далее я бы посмотрел в журналах apache или google analytics и получил 10 самых популярных php url. Я бы установил XDebug с профилированием и пропустил эти первые 10 запросов и получил файлы, дерево вызовов. (Вы можете просмотреть их с помощью инструмента кэширования)

Наконец, я прочитал весь путь выполнения 1 или 2 из этих трасс, который является наиболее представительным из целого. Я бы использовал свою Eclipse IDE, но распечатал их и отправился в город с маркером. Также

Метод Top 10 может привести к сбою в работе, если есть несколько систем, сложенных вместе. Вы должны быстро увидеть Xdebug, будут ли 10 лучших кодировок одинаковыми, если каждый из них является уникальным островом.

Я бы посмотрел на базы данных mysql и попытался понять, для чего они предназначены, особенно глядя на префиксы таблиц, у вас может быть несколько разных приложений, уложенных друг на друга. Если есть большие части db, не затронутые топ-10, вам нужно отправиться на охоту на сапаппы. Если вы обнаружите, что другие вспомогательные приложения запускают их через профайлер xdebug, а затем просматривают один из путей, представляющих это вспомогательное приложение.

Теперь вернитесь назад и посмотрите на номера областей из phploc и посмотрите, какой процент от кодовой базы (возможно, подсчет классов или функций) не был затронут во время вашего обзора.

У вас должно быть общее понимание наиболее часто выполняемого кода и идея о том, сколько укромных уголков и трещин и шкафов для хранения скелетов есть.

Ответ 2

Возможно, вы можете настроить непрерывную интеграцию. В этой среде вы можете собрать всю необходимую статистику.

Jenkins - это прекрасный CI-сервер с множеством плагинов и документации.

Ответ 3

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

https://stackoverflow.com/questions/4202311/php-tools-for-quality-check

НТН

PS. Должен сказать, что ваш вопрос, ИМО, содержит уже много отличных ответов.

Ответ 4

Если вы занимаетесь статистикой, посмотрите на индекс CRAP (Change Risk Analysis and Predictions), который измеряет качество кода.

Есть двухчастная хорошая вводная статья:

Первая часть
Вторая часть

Ответ 5

Имея как встроенные, так и страшные огромные проекты PHP-проектов с спагетти, я думаю, что вы сможете использовать только инструменты анализа, только так много. Большинство из них просто скажут вам, что проект страшного качества:)

Инструменты тестирования модулей и исходного кода обычно нуждаются в некотором активном вкладе внутри кода для получения полезных результатов. Тем не менее, все они, безусловно, стоит попробовать - я не знаком с инструментами phpCallGraph и Sebastian Bergmann. Кроме того, phpDocumentor может иметь некоторый смысл из, по крайней мере, части кода. PHPXref также является отличным инструментом для получения обзора, здесь (медленная) демонстрация.

Лучшим способом начать может быть просто выполнение простой задачи, которая должна выполняться в базе кода, и пробиваться через джунгли, следить за ними, пытаться понять структуру библиотеки и т.д., пока работа не будет выполнена, Если вы присоединитесь к команде, возможно, есть кто-то поблизости, вы можете попросить руководство.

Я хотел бы сосредоточиться на том, чтобы сделать процесс исследования максимально удобным. Некоторые (тривиальные) точки включают в себя:

  • Используйте среду IDE, которая может быстро перейти к определению функций/методов, классов и переменных

  • Отпустите отладчик

  • Абсолютно держите все под контролем источника и совершайте каждое изменение

  • У вас есть среда, которая позволяет вам легко развернуть изменение для тестирования, а также легко переключиться на другую ветку или полностью отбросить все обратно. Вот связанный вопрос о том, как установить что-то вроде этого: Настройка цикла развертывания/сборки/CI для проектов PHP