W poprzednią sobotę w trakcie prowadzenia wykładu o jakości oprogramowania trochę się zdziwiłem ponieważ dość duża liczba osób nie znała najprostszych narzędzi, które pozwalają poprawić jakość wytwarzanego oprogramowania. Koszt wdrożenia oraz utrzymywanie jakości w projekcie jest niewielki pod warunkiem, że pomyślimy o tym w momencie rozpoczynania pracy. Odkładanie tej decyzji w czasie powoduje, że rosną koszty naprawy potencjalnych błędów wprowadzonych w aplikacji.
Oczywiście docelowo zakładałbym, że naszym celem będzie utrzymanie poprawnego kodu, natomiast jeśli nie mamy na to wystarczającego budżetu to wdrożenie monitorowania jakości kodu pozwala nam na zorientowanie się w którym miejscu jesteśmy oraz określenie trendu.
Zacznijmy od najprostszych narzędzi.
StyleCop
Zacznę od najprostszego z narzędzi – StyleCop. Narzędzie to pozwala na ujednolicenie stylu pisania kodu. Zwraca uwagę na odpowiednie wcięcia, formatowania, nowe linie, itp. Z jednej strony może wydawać się to mało istotne, ale… Zastanówcie się, każdy z nas ma odrobinę inny styl pisania kodu. Jeśli w zespole jest więcej osób to pojawia się problem, że w różnych miejscach nasz kod wygląda inaczej. Za każdym razem, kiedy zmienia się skład tego zespołu, nowe osoby będą zmuszone nauczyć się naszego sposobu pisania kodu, a z drugiej strony nowe osoby wprowadzą do kodu swoje nawyki. To powoduje, że po pewnym czasie w kodzie pojawia się bałagan.
W rozwiązaniu tego problemu pomoże nam StyleCop. Instalacja jest bardzo prosta. Wystarczy zainstalować odpowiednią paczkę z NuGeta – StyleCop.Analyzers:
Po zainstalowaniu tego pakietu po każdej kompilacji pojawi się lista błędów, którymi powinniśmy się zająć:
FxCop
Drugim narzędziem jest FxCop. Zasada działania jest bardzo zbliżona do StyleCop-a. Inny jest natomiast zakres analizy. W tym przypadku narzędzie to sprawdza zgodność naszego kodu z wytycznymi zawartymi w .NET Framework Design Guidelines.
Instalacja i uruchomienie jest dokładnie taka sama jak w poprzednim przypadku. Instalujemy paczkę z NuGet-a – Microsoft.CodeAnalysis.FxCopAnalyzers:
I podobnie jak w poprzednim przypadku zaraz po pierwszej kompilacji pojawią się informacja o błędach:
Wykorzystując oba narzędzia proponowałbym zmienić jeszcze jedno ustawienie w Visual Studio. W ustawieniach projektu w konfiguracji Release w sekcji Build proponowałbym wybrać opcję All w sekcji Treat warnings as errors:
dupFinder
Kolejne narzędzie zostało przygotowane przez firmę JetBrains. DupFinder jest prostym konsolowym narzędziem, które wyszukuje powtórzenia w kodzie. Praca z nim jest bardzo łatwa. Wystarczy go tylko uruchomić z odpowiednimi parametrami i przerobić otrzymany raport XML do czytelniejszej formy:
.\dupfinder.exe .\Code\MyProject.sln --show-text --o="report.xml" .\msxsl.exe report.xml dupFinder.xsl -o result.html
Poniżej znajduje się przykładowy raport:
Pokazuje on dokładnie w których plikach występują powtórzenia oraz jak wygląda kod, który się powtarza. Na podstawie tych informacji bardzo łatwo można zaplanować refaktoryzajcę kodu i wydzielić powtarzający się kod do osobnych klas.
NDepend
Na koniec zostawiłem największy kombajn – dodatek do Visual Studio NDepend. Narzędzie to potrafi cuda. Przede wszystkim pozwala na analizę kodu w bardzo prosty sposób. Wystarczy raz na jakiś czasu uruchomić analizę naszego kodu, a narzędzie zweryfikuje, czy nie popełniliśmy błędów. Baza niepoprawnych wzorców jest olbrzymia. A całość podsumowania znajduje się w jednym miejscu:
Szybka analiza podsumowania pozwala na określenie miejsca w którym jesteśmy. Oprócz prostych statystyk dotyczących naszego projektu, znajdują się tam ciekawe statystyki dotyczące długu technologicznego przedstawionego w różny sposób – od ilości dni do jego naprawy, poprzez wykresy pokazujące jak zmieniał się ten poziom na przestrzeni czasu, a kończąc na rozbiciu poszczególnych problemów na kategorie.
Oczywiście klikając na poszczególne elementy przechodzimy do dokładniejszych informacji:
Zachęcam do zapoznania się z dokładniejszym opisem tego dodatku – NDepend – krótka recenzja.
Podsumowanie
Na koniec chciałbym zwrócić uwagę na jeden szczegół. Sama instalacja tych narzędzi nie jest wystarczająca. Aby one miały sens musimy zacząć analizować informacje, które z nich otrzymujemy. Jeśli chodzi o mnie to ja robię to w taki sposób, że planuję raz na miesiąc spotkanie, w trakcie którego analizuję przedstawione statystyki. Zaczynam od przejrzenia aktualnych wartości, następnie sprawdzam jak zmieniały się one w czasie oraz które elementy się pogorszyły, a które polepszyły. Na koniec próbuję zaplanować akcje, które chciałbym podjąć w trakcie następnego miesiąca, aby poprawić zastaną sytuację oraz planuję następny przegląd.
Zostaw komentarz