Эффективный сбор информации о внутренней работе нового проекта PHP. Инструменты? Методы? Сценарии? - PullRequest
17 голосов
/ 26 марта 2011

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

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

  • Не ожидается автозагрузка, по крайней мере, не экстенсивно, поэтому , включая , может помочь выявить взаимозависимости.

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

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

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

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

  • phpinfo () .

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

Не охватывает юнит-тесты, базы данных, ....

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

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

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

Имееткто-нибудь сталкивался с этими инструментами?

РЕДАКТИРОВАТЬ из "PHP инструменты для проверки качества" :

РЕДАКТИРОВАТЬ 2 из ответа Брайана Уотерса:

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

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

Только что нашел это PDF выступления Габриэле Сантини - "СтатистическийАнализ кода - Слушайте свой код PHP ".Это как золотой рудник.

Ответы [ 5 ]

3 голосов
/ 01 апреля 2011

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

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

Далее я бы посмотрел в логах apache или в Google Analytics и получил 10 самых популярных php URL. Я бы настроил XDebug с профилированием и выполнил бы эти топ-10 запросов и получил бы файлы, дерево вызовов. (Вы можете просмотреть их с помощью инструмента cachegrinder)

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

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

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

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

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

2 голосов
/ 26 марта 2011

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

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

2 голосов
/ 28 марта 2011

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

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

НТН

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

1 голос
/ 02 апреля 2011

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

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

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

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

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

  • Отладчик работает

  • Абсолютно все держать под контролем исходного кода и фиксировать каждое изменение

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

1 голос
/ 26 марта 2011

Если вы разбираетесь в статистике, взгляните на индекс CRAP (Анализ рисков и прогнозы), который измеряет качество кода.

Хорошая вводная статья из двух частей:

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

...