Pomiar jakości kodu
Data dodania: 2011-11-10
Podczas tworzenia dużych i złożonych systemów bardzo ciężko jest zapewnić odpowiedni poziom kodu tworzonego przez deweloperów. Każdy z nich ma trochę inne nawyki, a ilość klas i modułów takiego systemu praktycznie uniemożliwia przeglądanie wszystkich fragmentów i wychwytywanie sytuacji błędnych lub nieefektywnych. Przy tym zadaniu również przychodzi nam z pomocą automatyzacja testów w połączeniu z dodatkowym narzędziem o nazwie Sonar. Narzędzia tego używamy przede wszystkim do monitorowania projektów w języku Java ze względu na pełne wsparcie tego jązyka przez wszystkie mechanizmy testujące Sonar-a.
Sonar to opensource'owy projekt, którego celem jest dostarczanie wskaźników opisujących kod i pomiar ich zmienności w czasie. Dane dotyczące poszczególnych projektów i modułów możemy następnie przeglądać w postaci czytelnego dashboardu, ktory prezentuje potencjalne zagrożenia, wykresów, tabel, itp w kontekście globalnym, lub ograniczone do zadanego fragmentu (pakietu) systemu. Dane zbierane przez sonar są wynikiem zestawu testów wykonywanych na kodzie podczas każdego uruchomienia (domyślnie - przy każdej zmianie kodu). Całość jest oczywiście powiązana ze zmianami kodu w repozytorium kodu (Subversion). Do testów tych zaliczane są (najważniejsze):
- pokrycie kodu testami jednostkowymi
- pokrycie kodu komentarzami typu javadoc (w tym jakość i kompletność tych komentarzy)
- pomiar złożoności kodu (algorytmy zliczające ilość pętli, instrukcji warunkowych, itp na każdą funkcję)
- testy ilościowe: ilośc klas, ilość linii kodu, itp.
- testy jakościowe kodu oparte o system Checkstyle wykrywające nadużycia, złe praktyki oraz inne niezgodności ze standardami kodu
- dowolne rozszerzone testy w postaci pluginów (np. szacunkowy koszt poprawek i zmian w kodzie "Technical Debt")
System umożliwia też wprowadzenie poziomów krytycznych i ostrzegawczych dla mierzonych wskaźników oraz automatyczne wysyłanie powiadomień w przypadku drastycznych zmian w ich poziomie.
Rozwiązanie to stosujemy z powodzeniem w projektach dla Noble Concierge i DHL (mi.in. system obsługi transportów liniowych). Dzięki niemu managerowie na bieżąco monitorują czy powstający kod utrzymuje odpowiedni standard jakości. Narzędzie świetnie się sprawdza zarówno na etapie tworzenia oprogramowania kiedy przyrost ilości linii kodu jest bardzo duży i monitorowanie jego jakości ma kluczowe znaczenie dla późniejszego utrzymania tego kodu, jak i w dalszym procesie utrzymania systemu i jego rozwoju. Na podstawie raportów Sonara kilka razy podejmowane były kroki mające na celu wstrzymanie prac deweloperskich i nadgonienie braków w testach i dokumentacji javadoc. Dzięki temu późniejsze utrzymanie systemu jest znacznie prostsze i mniej problematyczne. Ma to też kolosalne znaczenie w przypadku wdrażania się nowego człowieka w taki projekt.
Poniżej kilka zrzutów ekranów prezentujące poszczególne ekrany systemu Sonar.
Dashboard systemu Sonar dla wybranego projektu. Poszczególne boksy odpowiadają poszczególnym testom (wskaźnikom) jakości kodu.
Prezentacja historii zmian poszczególnych (dowolnie zestawionych) wskaźników.
Zestawienie nadużyć kodu ze względu na rodzaj nadużycia. W każdym rodzaju prezentowane są komponenty (pliki, pakiety, klasy) najbardziej odbiegające od norm i standardów.
Autor: Maciej Liżewski, 3e internet software house