блок-схема из исходника

Alkinoy

Начинающий
блок-схема из исходника

Народ, кто может подсказать программку для автоматического рисания блок-схем алгоритма по исходному коду php?
 

jonjonson

Охренеть
QQQ, ещё не такое бывает, но лучше бы его не было. Где то тут тема была в одном из разделов... Вот только правда жизни думаю вас покоробит своей простотой :)
 

Alkinoy

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

Alexandre

PHPПенсионер
Alkinoy EA - может сделать реинжениринг в UML диаграмму
так же есть плагин для DIA, который делает реинжениринг в UML диаграмму,
но это не так сильно помогает в понятии чужого кода. Эти диаграммы жедают лучшего.
 

Krishna

Продался Java
Alexandre
Кстати, обиддно, что ЕА не строит диаграммы последовательностей для PHP - только классов.
А ведь мог бы, если бы через какой-нибудь дебаггер подключался б.
 

Alexandre

PHPПенсионер
обиддно, что ЕА не строит диаграммы последовательностей для PHP
кажется RR тоже не умеет (не умел 3 года назад... сейчас не знаю) строить диаграмы последовательностей по коду. И вообще - кто их умеет строить?

EA - Enterprice Architect
RR - Rational Rose
 

Alexandre

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

Интерактивная тулза - это хорошо, но слишком сложна в реализации. Т.е. EA (или иная тулза) должна быть частью РНР интерпретатора, чтоб использовать стек вызовов, таблицы классов и пр... Такая задача у инженеров ЕА на стоит, так как слишком уж во многие IDE нужно всовывать нос.

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

Krishna

Продался Java
кажется RR тоже не умеет (не умел 3 года назад... сейчас не знаю) строить диаграмы последовательностей по коду. И вообще - кто их умеет строить?
EA и умеет, только не для PHP. Посмотрите внимательнее в Build and Run закладке.

не думаю, что дебаггер смог бы помочь...
Диаграмму последовательностей можно построить, в основном, на основе синтактического анализа кода, анализа стека вызовов и пр.... Правда - если не учитывать условные ветления.
А Вы дебаггером PHP пользовались когда-нибудь? Уж если он может делать построчную отладку в IDE (например PDT + XDebug) - думаю этого должно хватать для Sequence diagram. Хотя, конечно, возможно я ошибаюсь.

-~{}~ 21.11.07 21:17:

[off]
З.Ы. Можно и на ты, я просто подстраховываюсь, а то один старичок тут очень возмущался моим тыканьям ;)
[/off]
 

Alexandre

PHPПенсионер
EA и умеет, только не для PHP. Посмотрите внимательнее в Build and Run закладке.
не РНР не юзал - спорить не буду...

Не думаю, что тресинг поможет, хотя как знать...
тресинг - он во многом зависит от данных...
я больше склоняюсь к варианту синтактического анализа кода, типа как анализирует - PHPDoc.

вполне можно отследить - в каком классе был инстацирован какой класс. В каком классе - вызывались какие методы.

Единственно трудно анализировать конструкции типа:
PHP:
 $c1 = new $className;
$c1->$controller();
или всякий бред с eval();
Можно и на ты, я просто подстраховываюсь
Это не в мой ли огород - камень?... я не против общения на ты. Иногда, я против хамства, но это разные вещи.
 

dark-demon

d(^-^)b
в блоксхеме с более чем 20 узлами и 30 векторами разобраться не проще, чем в голом исходнике...
 

Develar

Новичок
>> Не думаю, что тресинг поможет, хотя как знать...
дам прямую ссылку на "блок-схем алгоритма" - http://cachegrindvisualizer.googlecode.com/files/CachegrindVisualizer-en-0.2-example.svg Это xdebug - результат профилирования можно использовать не только как профилирование, так же можно использовать для этого и родной формат трассировки xdebug - только инструментов его визуализации, в отличие от формата cachegrind, нет.

Хотя да, на определение (http://ru.wikipedia.org/wiki/Блок-схема) это не похоже, но ведь задача понять "удобно видеть блоксхему чужого кода, когда пытаешься с ним разобраться", поэтому протрассировать несколько раз с разными входными данными и все. А так - xdebug + Tokenizer Functions и за пару дней можно написать что-то близкое к блок-схеме, дабы не самому подбирать входные данные.
 
Сверху