Już jakiś czas temu napisał do mnie Patrick Smacchia i poprosił o napisanie, krótkiej recenzji jego aplikacji – NDepend. Chyba nie trzeba przedstawiać nikomu tego narzędzia – jest to kombajn do analizy naszego kodu. Możliwości jego są olbrzymie. Chcąc podejść do tej prośby profesjonalnie, postanowiłem poznać to narzędzie dość dokładnie przed napisaniem czegokolwiek. Niestety poległem. Mnogość funkcji i możliwość dostosowywania tego narzędzia powodują, że jest naprawdę ciężko. Używając go już ponad dwa miesiące mogę spokojnie napisać, że nie czuję się dość zaawansowanym użytkownikiem.

Raport stanu – HTML

Ale spróbujmy. Główną funkcjonalnością tego narzędzia jest analiza naszego kodu. Aplikacja potrafi zebrać wszystkie wskaźniki i przygotować różnego rodzaju raporty o sytuacji naszej aplikacji. Zaledwie kilka kliknięć dzieli nas od wygenerowania raportu o stanie naszej aplikacji:

Znajdziemy tam dość dużo informacji przedstawionych w postaci:

  • wykresów zależności,
  • metryk,
  • wskaźników jakości,
  • spełnienia reguł.

Oczywiście w przypadku każdego elementu możemy nawigować w głąb i uzyskać większą ilość szczegółów:

Zaletą raportów w postaci HTML’a jest to, że zawsze możemy je komuś wysłać do analizy a ponadto możemy je wygenerować przez nasze środowisko CI.

Raport stanu – Visual Studio

Prawdziwa zabawa zaczyna się po odpaleniu Visual Studio. Podobnie jak w przypadku przeglądarki NDepend przygotuje nam raport o stanie naszej aplikacji, ale…

będzie można po nim dodatkowo nawigować. W tym przypadku będziemy mogli dojść do interesującego nas fragmentu kodu. Co więcej uruchamiając NDepend co jakiś czas będziemy mogli zaobserwować, jak zmieniają się nasze statystyki jakości kodu.

Możliwości konfiguracyjne

Nie ma jednak róży bez kolców. Narzędzie przychodzi z bardzo dużą ilością reguł już skonfigurowanych. Natomiast nie zawsze będziemy z nimi się zgadzać. Dlatego też na początku pracy z aplikacją trzeba poświęcić trochę, a nawet sporo czasu na jej dostrojenie do własnych potrzeb. W tym przypadku mam na myśli dwie akcje:

  • wyłączenie niepotrzebnych reguł
  • utworzenie brakujących reguł samodzielnie – tu możliwości są ogromne. Używając języka CQLinq możemy przygotować reguły / zapytania, które następnie podepniemy do raportu.

Po odpowiednim skonfigurowaniu, narzędzie posłuży dość dobrze jako pomocnik przy code review. Oczywiście nie zastąpi ono doświadczenia i analizy zrobionej przez człowieka, ale pomaga zdecydowanie wyłapywać innego rodzaju błędy.

Analiza zależności

I na koniec najfajniejsza funkcjonalność – jeśli chodzi o mnie – analiza zależności. Jest to coś co najczęściej używam. Narzędzie umożliwia nam wizualizować najróżniejsze zależności w naszej aplikacji. Rozpoczynając od:

  • diagramu zależności komponentów:

  • diagramu dziedziczenia:

  • diagramu wykorzystania:

Pracując z dużą aplikacją, której jeszcze nie znamy te proste diagramy mogą naprawdę pomóc. Jedna rzecz jest lekko irytująca – za każdym razem diagram wyświetla się w tym samym oknie. Na razie nie udało mi się znaleźć opcji, która zmieniłaby to zachowanie.

Inne funkcje aplikacji

Niezmiernie ciężko jest opisać tak bogatą w funkcje aplikację. Przedstawiłem Wam najważniejsze funkcje dla mnie. Zachęcam do zapoznania się z krótkim filmem o aplikacji:

Podsumowanie

Aplikację można śmiało nazwać kombajnem, scyzorykiem, wytrychem, … Mnogość funkcji jest olbrzymia. Dzięki udostępnieniu możliwości tworzenia zapytań w języku CQLinq możemy tą aplikację dostosować do naszych potrzeb. I po odpowiedniej konfiguracji narzędzie to jest genialne.

Natomiast nie jest to narzędzie, które pokochamy od pierwszego uruchomienia. Trzeba się do niego przyzwyczaić. Jeśli chodzi o mnie to na początku byłem trochę zagubiony. Ilość dostępnych opcji mnie przerosła. Aby móc efektywnie z nim pracować należy poświęcić trochę czasu na naukę tego narzędzia oraz jego konfigurację.

Zdecydowanie nie jest to narzędzie, dla osób, które oczekują, że po instalacji nacisną jeden przycisk i otrzymają oczekiwany wynik. Z tym narzędziem trzeba trochę popracować. Może nawet nie trochę, a sporo. Ale później jest już super.

Z drobnych rzeczy, które można byłoby poprawić to na pewno sposób instalacji – brakuje instalatora. I jeśli chodzi o mnie to pomyślałbym o uproszczeniu aplikacji. Może ona przestraszyć osoby, które nie będę zbyt zdeterminowane, aby ją poznać. Z drugiej strony jest to dość specjalistyczne narzędzie i może takie ułatwienia nie są konieczne.