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

Есть ли инструменты визуализации кода PHP?

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

В идеале это программное обеспечение будет работать на Mac, но я возьму что угодно: Windows, Linux, веб-сайты и т.д.

4b9b3361

Ответ 1

[UPDATE: этот ответ не обрабатывает пространства имен, поэтому он в основном устарел. Я оставлю его здесь, если кто-нибудь найдет подходящий подход DOT.]

Вот простой способ графа наследования классов в PHP.

Grep для определения классов, а затем преобразуйте вывод grep в синтаксис DOT. ПРИМЕЧАНИЕ. Этот процесс потребует проб и ошибок в вашей ситуации. Запустите grep отдельно и настройте его, чтобы показать правильные строки определения класса перед тем, как поместить его в script!

Этот script был для PHP на стандартном * nix (я использовал Ubuntu), с установленным графическим интерфейсом и используя grep -v, чтобы исключить некоторые каталоги, которые не представляли интереса, потому что я смотрел на CakePHP-кодовую базу. В этой ситуации Fdp работал лучше, чем sfdp, dot, circo или neato.

Создать файл generateClassHierarchy.sh

#!/bin/bash
echo 'digraph code {' > code.dot;
grep -r "^class " * | grep -v "^app/vendors" | grep -v "^cake/" | grep -v "Binary file" | sed 's/.*://' | sed 's/class /    /' | sed 's/ extends / -> /' | sed 's/ implements .*//'  | sed 's/ \?{.*$//' | sort >> code.dot  
echo '}' >> code.dot; 
fdp -Tpng -ocode.fdp.png code.dot 2> /dev/null # Ignore syntax error
echo "OK"; 

Тогда просто:

cd /var/www/my_app/                     # or wherever
bash ~/shell/generateClassHierarchy.sh  # or wherever
eog code.fdp.png 

Замените eog на предпочтительный просмотрщик изображений. Я запустил это на Zend Framework в качестве теста и составил 22 мегабайт PNG-графика. Запуск его только на Zend_Db показывает вам это (пример на моем сайте):

http://chapman.id.au/generate-php-class-inheritance-diagrams-in-graphviz

Ответ 2

  • KCachegrind - С Xdebug вы можете профилировать выполнение ваших сценариев, KCachegrind может генерировать несколько довольно удивительных диаграммы вызовов из этого
  • nwire для Eclipse

Ответ 3

Возможно, http://phpcallgraph.sourceforge.net/ для статического анализа.

Он может выводиться в различные форматы.

Ответ 4

BOUML может сделать UML-диаграммы из существующего кода PHP

Ответ 5

nWire устарел, не поддерживает последние версии PHP (пространства имен). Версия сообщества Visual Paradigm бесплатна для некоммерческих проектов, но также не работает на последних версиях PHP.

phUML - очень полезный бесплатный инструмент. Он больше не поддерживается, но все еще отлично работает для PHP 5. Пользователи Mac должны установить graphviz.

Ответ 7

Основываясь на ответах выше, стоит сделать это различие:

  • Диаграммы классов/методов вашего PHP-кода (статический анализ кода). Это то, о чем вы просите. Еще одним вариантом может быть PHPDependencyAnalysis, это open-source.
  • Инструменты визуализации данных/анализа, содержащие графические библиотеки. Очень популярным инструментом является JGraph и те, что похожи на Sisense, которые имеют удобный API, к которым можно получить доступ с помощью PHP