Program, który by brał plik z kodem, parsował go i rysował ładny graf powiązań między metodami, pokazując przy okazji miejsca użycia poszczególnych zmiennych klasowych.
Albo lepiej – program, który by brał katalog z projektem i rysował graf powiązań między plikami, pokazując na czerwono miejsca użycia zmiennych globalnych i innych trefnych rozwiązań.
Albo jeszcze lepiej – program, który po odpaleniu skryptu po prostu by pokazywał, gdzie dana zmienna była używana i jakie wartości przyjmowała.
Życie programisty byłoby znacznie milsze i łatwiejsze, gdyby taka zabawka oszczędzała mu wielogodzinnej analizy kodu i żmudnego śledzenia kilkunastu zmiennych po kilkudziesięciu plikach.
Oczywiście najlepiej by było, gdyby programiści po prostu pisali kod porządnie i z rozmysłem, używając komentarzy i generalnie biorąc pod uwagę, że ktoś kiedyś może chcieć coś w nim zmienić – ale o tym to ja już (nauczony doświadczeniem) nawet nie marzę.
Jednakowoż z okazji Dnia Programisty życzę sobie i kolegom po fachu, żeby taki cud się w końcu zdarzył. A tym, którzy o jakość i przejrzystość kodu nie dbają, życzę z całego serca, żeby ten dzień jak najszybciej przestał być ich świętem;-).
Komentarze
Na pewno jest coś takiego na platformę .Net i dla Javy, nie jestem w stanie podać teraz żadnej nazwy.
Że tego typu programy istnieją, to ja wiem, ale z ich użytecznością bywa różnie. Korzystałem kiedyś z fajnego programu dla Perla, pozwalającego puszczać skrypt po kawałku i podglądać wartości zmiennych, ale przy dużych rozmiarach skryptu to umrzeć ze starości można było, zanim się doszło do właściwego miejsca. Dlatego marzę, żeby ktoś zrobił coś takiego naprawdę porządnie, no i dla PHP;-)
Co do analizy wykonującego się kodu to polecam Netbeans (Zend Studio chyba też to obsługuje) + XDebug
Nie wiem z jakiego IDE korzystasz, ale Netbeans całkiem sensownie znajduje wszelkie wywołania metod etc.
„pozwalającego puszczać skrypt po kawałku i podglądać wartości zmiennych”
Ja się ogólnie nie znam, ale te wszystkie debuggery, profilery, analizatory kodu to się jednak trochę posunęły do przodu od tego czasu.
Nie wiem jak PHP, ale na te dwie główne platformy Java i .net to mogę się założyć, że są produkty, które spełniają wszystkie Twoje zachcianki. Automatyczne, generator UML, jakieś wizualizacje, bajery. Pewnie w większości komercyjne.
do powiązań między plikami, wywołaniami, etc. – świetnie nadaje się doxygen, nie znajdzie wszystkiego, ale np. zmienne globalne (+ miejsca występowania) będą, wywoływanie plików, wystąpienia metod (i co w konkretnych jest wywoływane) rysuje się na grafach – no nie wszystkie na jednym, ale informacji daje pełno
E tam. :P Przecież najlepsza metoda to jest dodany na szybko i na chwilę printf() (albo odpowiednik).
A najlepiej by było, jakby wszystko się samo pisało.
Swoją drogą jestem pełen podziwu dla tych wszystkich bajerów. Pamiętam, że swojego czasu zaczynałem uczyć się Javy i przesiadłem się z klepania C++ w prawie gołym ViMie na ówczesnego Netbeansa. Reakcję na te chytre proponowanie propownowanie rozwiązań żółtą żaróweczką można streścić tak: OMG.
BTW wszystkiego najlepszego z okazji 0x100 dnia roku :)
Mhm. Java i .NET (w nieco mniejszym stopniu) mają to wszystko. Narzędzia do profilowania runtime, grafy zależności, generowanie UML, wyłapywanie copy-paste i ogólne sprawdzanie „jakości” kodu (podejrzane używanie zmiennych, konwencje nazewnictwa, złożoność cyklomatyczna itp.), zaawansowane debuggery (debuggowanie zdalne, podmienianie kodu w locie, warunkowe breakpointy itp.), zrzucanie snapshotu wątków/sterty (również post-mortem) i narzędzia do analizy, kupa softu wspierająca TDD, mierząca pokrycie testami i jakość testów…
Jedyny powód, dla którego nadal zarabiam na Javie (i nie przerzuciłem się na C#/F#/IronPython/.NET) to właśnie niesamowity zestaw narzędzi wspomagających.
może sam sobie napisz ?
Skoro taki program skrocilby czas pisania kodu o pare godzin, to moze sam go napisz i sprzedawaj za $5. Wszyscy skorzystaja.
Gdyby to było takie proste, dawno bym to zrobił. A właściwie to ktoś inny by to dawno zrobił, zanim ja bym na to wpadł.
no nie mów że nie ma publicznie dostępnego parsera PHP ?
tzn. w części marzenia dotyczącej profilowania się nie wypowiadam, sorry za nieścisłość.
No właśnie, samo przeparsowanie kodu to nie problem, gorzej z analizą powiązań, która jest zadaniem zdecydowanie nietrywialnym. No i interfejs, który by jakoś w miarę czytelnie to pokazał, to też sporo roboty. Oczywiście nie ma rzeczy niemożliwych, ale w wolnym czasie (na którego nadmiar nie narzekam) na pewno takiego narzędzia nie dam rady napisać.
tzn. ja się nie orientuję w PHP, nie wiem jak się tam wyciąga info z profilera (chciałeś jakieś częstości wywołań, etc).
przymierzałem się kiedyś do analizy powiązań między klasami w closie (diagramy w graphvizie ofc). Szło lekko ale ogólnie jakoś mi się odechciało programować, tzn. z mojego doświadczenia wynika że sparawa nie jest beznadziejna. Zresztą później gdzieś przyuważyłem że ktoś to zrobił lepiej.
Jeśli nie ma nic takiego to mogło by się zebrać 10-20 osób zarabiających na pisaniu w PHP i zlecić napisanie takiego narzędzia ;)