Analiza kodu źródłowego programów

1

Mam sobie np jakiś projekt w javie który jest przykładowym programem ukazującym możliwości biblioteki. Jest on dosyć duży. Moje pytanie brzmi jak analizować taki program aby dowiedzieć się jak działają wszystkie mechanizmy biblioteki aby móc je potem używać. Jest tam dosyć dużo metod i trudno się w tym połapać. Zaczynać analizę od maina? później wyłonić najważniejsze klasy i to je analizować w celu znalezienia klas z których one korzystają czy jak. Wiem ,że to może troche głupie pytanie, ale ja bym się chciał dowiedzieć jak wy postępujecie jak byście mieli analizować cudzy kod źródłowy. Proszę o wskazówki.

4

Ja zacząłbym od przeczytania dokumentacji kodu...

1

Jesli jest to duzy kod to calosc bedzie ciezko ogarnac, ogolnie to ja robie prawie zawsze tak samo:

  1. szukam dokumentacji / komentarczy czegokolwiek co mogloby naprowadzic.
  2. sprawdzam moduly i mniej wiecej co one robia (organizacja kodu)
  3. lece od maina badajac jakas sciezke wykonania
  4. sprawdzam pozostale przypadki

Dodam tylko, ze analiza calego kodu czesto jest nie potrzebna, poniewaz:
a) do bibliotek powinna byc dolaczona dokumentacja (albo szukamy tego co nas w niej interesuje)
b) jesli musimy ogarnac jakis kod firmowy (jestesmy nowymi pracownikami) to robi sie to raczej powoli, a i tak sie zapamieta
c) zazwyczaj jest sprawdzana konkretna funkcjonalnosc (jak zostala zaimplementowana, etc.)

2

Najlepszą analizą kodu jest po prostu użycie go. Wtedy wiesz co jest dobre, a co złe.

1

A co do pytania zadanego przez autora:

  • Jeśli jakaś biblioteka nie ma dokumentacji technicznej - oznacza to, że dana biblioteka jest źle napisana. Mało profesjonalnie i nie wiadomo czy na pewno można jej zaufać. Chyba, że...
  • Jeśli biblioteka nie ma dokumentacji, ale posiada udostępniony szereg testów jednostkowych, to jest to dobra biblioteka, a dokumentacja nie jest potrzebna. Testy jednostkowego, zautomatyzowane i inne są dużo lepsze niż dokumentacja.

W takim przypadku analiza przykładowego kodu nie jest potrzebna, gdyż same testy w sobie są dokumentacją i przykładem wykorzystania kodu.

Jeśli zaś widziałbym bibliotekę gdzie ktoś podaje przykładową aplikację z użyciem tej biblioteki (gdzie brak testów lub chociaż dokumentacji), to nawet nie zawracałbym sobie głowy nią. Zwyczajnie nie ufałbym takiej bibliotece bo bardzo prawdopodobne, że zawiera ona multum błędów.

W takim przypadku dużo lepiej:

  • Napisać własną bibliotekę. Zresztą pisanie to przecież najlepsze co może być u programisty.
  • Szukać innej biblioteki, która nas zadowoli.
0

http://www.atlassian.com/software/fisheye/overview/feature-overview

W kontekście analizy kodu może mniej przydatne, gdy już masz projekt, ale gdy tworzysz jakiś od nowa lub chcesz mu się przyjrzeć, przedyskutować w grupie to całkiem mocne narzędzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1