Witam, tym razem nawiążę pośrednio do archiwalnego artykułu dotyczącego Gource. O ile Gource można określić ciekawym gadżetem, o tyle GitInspector to już aplikacja pozwalająca czerpać korzyści z punktu widzenia biznesowego. Managerzy projektów często korzystają z dużo większych analiz, które są oferowane w CI, dlatego opisywaną aplikację określam raczej, jako dedykowaną dla małych projektów, małych firm lub programistom, którzy sami chcieliby zobaczyć, jak wyglądają na tle swoich kolegów w projekcie. Wspólnym wyznacznikiem w obu przypadkach jest system kontroli wersji GIT. Sporo czasu zajęło mi wyszukanie programów tego typu. Bardzo się zdziwiłem, kiedy okazało się, że aplikacje tego typu istnieją i cieszą się mniejszym lub większym powodzeniem. Byłbym bardziej obiektywny, gdybym takie testy aplikacji zrobił niezależnie na każda platformę. Jednak na razie musicie się zadowolić moim faworytem na system Windows. GitInspector ma to czego wymagałem od tego niego.

Na wstępie pragnę odesłać zainteresowanych na stronę projektu. W skład analizy statystycznej repozytorium wchodzi:

  1. Szczegółowa informacja o commitach.
  2. Analiza autorska wierszy kodu.
  3. Historia zmian z możliwością określenia okresu porównawczego (tydzień, miesiąc).
  4. Informacje o anomaliach w projekcie (bad smells).
  5. Określenie odpowiedzialności poszczególnych commiterów.
  6. Detekcja typów plików w projekcie.
GitInspector - przykładowa analiza

GitInspector – przykładowa analiza

Sama aplikacja jest konsolowa. Wszystkiego na jej temat dowiemy się więc z konsoli. Komenda:

gitinspector.py –help

Pozwoli wyświetlić stronę pomocy. Pamiętajmy, że możemy napotkać błąd z kodowanie (zależy, czy pracujemy na komputerze z systemem polskim, czy nie. GitInspector odczytuje lokalizację i dostosowuje język interfejsu. Problem zaczyna się w miejscu styku – na konsoli, gdzie domyślna strona kodowa to 437. Aby mimo wszystko uruchomić program konieczna jest wówczas zmiana strony kodowej na 1250 lub 852, wykorzystując komendę:

chcp 852

Wygenerowanie raportu z repozytorium GIT wymaga wywołania:

gitinspector.py ścieżkadorepozytorium > ścieżkadoplikuwyjściowego

To pozwoli wygenerować podstawowy raport w języku angielskim. Jednak jesteśmy obdarowani od twórców sporą liczbą parametrów, które można, a nawet należy wykorzystać przy generowaniu raportów:

  • –format=[html,htmlembedded,text,xml] (domyślnie text)
  • –file-types=lista,rozszerzeń,oddzielonych,przecinkami  –  określa pliki, które są uwzględniane przy tworzeniu statystyk (domyślnie: java,c,cc,cpp,h,hh,hpp,py,glsl,rb,js,sql; należy uważać na ten parametr, bowiem pominięty powoduje przekłamanie wyników, zwłaszcza gdy projekt nie jest napisany w technologii Java, JavaScript, Python, C, C++)
  • -l  –  wyświetlony zostaje blok z informacją, jakie rozszerzenia znajdują się w repozytorium
  • -L  –  dostosowuje język wyjścia do języka lokalizacji systemu (jeśli to możliwe)
  • -T  –  pokazuje zmiany w czasie
  • -H  –  dokładnie analizuje wiersze kodu (może powodować znaczne wydłużenie czasu generowania raportu)
  • -m  –  w czasie analizowania commitów używa metryk
  • -r  –  pokazuje blok dot. odpowiedzialności za pliki
  • -w  –  pokazuje informacje statystyczne w tygodniach (domyślnie w miesiącach)

Dodatkowo konieczne niemalże jest wykorzystanie parametru exclude (-x lub –exclude). Nie będę tutaj przytaczał słów autorów. Zastosowanie zostało jasno opisane tutaj. Jest to o tyle konieczne, gdyż zapobiega przekłamaniom. Przykładowo w projekcie znajdują się rozszerzenia open-source (zewnętrzne), jak i wewnętrzne (prywatne). Poprzez uwzględnienie zewnętrznych, otrzymujemy przekłamanie przypisujące ich autorstwo commiterom, którzy je wyłącznie dodali do projektu.

Powyżej opisałem podstawowe, najbardziej kluczowe parametry. W celu zdobycia więcej szczegółów zapraszam do skorzystania z pomocy aplikacji.

Aplikacja jest już na pierwszy rzut oka bardzo rozwojowa. Spoglądając na prace (cały czas postępujące) przy projekcie, mogę w ciemno napisać – niedługo twórcy dodadzą coś fajnego. Macie jakieś propozycje? Piszcie w komentarzach.

Pozdrawiam!