piątek, marca 04, 2016

Jak walczyć z gigantycznym kodem w Java'ie, część 1.6 - podłe metody prywatne ;-)

Metody prywatne są wredne.

Jednym z narzędzi, które napisałem do analizy naszego codebase'a (kilka milionów linii kodu w Java'ie) jest narzędzie, które pilnie analizuje programy i znajduje w nich miejsca gdzie tworzymy i wysyłamy message JMS i takie gdzie je odbieramy.
Przy 500 różnych rodzajach JMSów to pomaga.

Przygotowanie do analiza wygląda tak (powtarzamy dla wszystkich projektów):
- pobierz kod z repozytorium,
- skompiluj,
- zdekompiluj do "assemblera" JVM,
- zapisz cały zdekompilowany kod do pliku.

Kolejny tool analizuje tak zdekompilowany kod i znajduje wszystkie ciekawe miejsca (patrzy na wszystkie new, cast check i wszystkie invoke, wcześniej jeszcze patrzy na wszystkie extends i implements).

Sęk w tym, że wczoraj kolega zgłosił mi, że właśnie ma 1 miejsce gdzie JMS jest obsługiwany a UI tego nie pokazuje.....

Zrobiłem śledztwo i wyszła moja niewiedza.

Gdy dekompiluje się kod z .class to domyślnie dekompilowane są tylko metody publiczne, protected i domyślne.... nie ma dekompilacji metod prywatnych.....

Trzeba dodać -p w linii poleceń gdy używa się javap....

Z innych obserwacji, różne wersje Java'y mają inne formatowanie wyników javap'a.


Podobne postybeta
Jak walczyć z gigantycznym kodem w Java'ie, część 1 ;-)
Nie ufajcie mergerowi z Mercuriala...
DVD BtVS sezon 2
Me hacker - debuger dobry
Bloggeroid 1.5.0 - czas lokalizacji ;-)