Zaawansowana analiza kodu z NDepend – część 1

W ostatnim czasie dzięki uprzejmości Patricka Smacchia, miałam okazję zapoznać się z narzędziem do analizy kodu jakim jest NDepend.

Ponieważ jednak ma on tak dużo możliwości, iż wyrósł by z tego całkiem spory artykuł, postanowiłam podzielić go na mniejsze i niniejszym zapraszam na pierwszy odcinek cyklu poświeconego temu narzędziu.

Zacznijmy zatem od tego czym jest NDepend, jak zacząć pracę z nim i Co nam daje?

Narzędzie służy do zaawansowanej analizy kodu, wspomaga przyglądanie się strukturze projektu, zależnościom, dbanie o czystość i wydajność kodu. Dostarcza nam przy tym wielu wizualizacji przedstawiających co się dzieje w projekcie na różne sposoby. To i wiele innych możliwości chciałabym opisać w tej i kolejnych częściach cyklu.

NDepend możemy pobrać tutaj. Niestety jest on płatne, ale możemy skorzystać z 14 dniowego okresu próbnego, aby dowiedzieć się czy to jest to czego naprawdę potrzebujemy. Jeśli chodzi o informację na temat cen, znajdziemy je tutaj. Jest możliwość zakupu licencji dla programisty jak również licencji przeznaczonej na serwer budujący. Im więcej licencji tym oczywiście taniej. Ceny zaczynają się zatem od 239 euro i sięgają aż do 299 jeśli chodzi o licencję dla konkretnego programisty. Ceny dla serwera budującego to od 479 euro do 599 euro. Jest to dość sporo, jednak narzędzie ma naprawdę dużo możliwości i koszt przy dużych projektach z pewnością się zwraca.

Po tym jak zainstalujemy NDepend pojawi nam się on w górnym pasku Visual Studio jak poniżej:ndepend_afterinstall

By przetestować możliwości narzędzia postanowiłam na tapetę wziąć Octokit.net. Jest to dotnetowa biblioteka do komunikacji z API GitHub. Odkryłam ją jakiś czas temu dzięki stronie 24 Pull Requests, która gromadzi informacje o różnego rodzaju projektach Open Source, które poszukują współpracowników.

Zatem, gdy już otworzymy konkretny projekt (w moim przypadku będzie to wlaśnie Octokit.net) i znów klikniemy w opcję NDepend menu będzie wyglądało następująco:ndepend_octokit

Opcją, która nas interesuje jest pierwsza od góry: „Attach new NDepend project to Current VS Solution”. Wybranie jej spowoduje otwarcie następującego okna:

ndepend_select

Możemy tutaj wybrać w jakim miejscu ma zostać utworzony projekt NDepend a także jakie pliki dll mają być brane pod uwagę przy analizie. Ja pozostawię to okienko bez zmian. Zatem klikamy przycisk Analyze 7 .NET Assemblies.Wówczas pojawi się kolejne okno – tym razem z wyborem wyników raportu jakie chcemy zobaczyć.

ndepend_report_select

W pierwszej części cyklu chciałabym skupić się na tej pierwszej opcji czyli NDepend Dashboard. Zatem ją wybieram i wówczas w Visual Studio otwiera się zakładka o nazwie Dashboard, która pokazuje nam wiele istotnych informacji. W przypadku tego projektu wygląda to następująco:

Najpierw mamy informacje na temat ilości kodu, komentarzy i reguł jakie kod powinien spełniać:

NDepend Dashboard 1

Poniżej (podzieliłam zrzuty ekranu na części, ponieważ na jednym nie zmieściłyby się wszystkie informacje) mamy dane na temat złamanych reguł w postaci wykresów:

NDepend dashboard 2

Każdy z wykresów ma szereg opcji, które widzimy w prawym górnym rogu:
Pierwsza ikonka, to możliwość zmiany położenia wykresu – na przykład zamiany prawego z lewym itp. Druga ikonka to tak naprawdę checkbox, który pozwala nam włączyć lub wyłączyć pokazywanie tego wykresu w raporcie. Trzecia – pozwala na edycję wykresy i dostarcza nam tym samym kolejny szereg opcji. Dla wykresu Rules Violated wygląda to następująco:

NDepend Dashboard Edit Chart

Czwarta ikonka to możliwość wyeksportowania wykresu a ostatnia to usunięcie go z tablicy.

Kolejne wykresy jakie mamy do dyspozycji to:

NDepend Dashboard 3

Wykres Percentage Coverage By Tests jest pusty, ponieważ nie zaimportowaliśmy danych na temat pokrycia testami. Zrobimy to w jednym z kolejnych artykułów. Wykres Max prezentuje nam różnego rodzaju maksymalne wartości dla naszego kodu.

Ostatnie wykresy to:

NDepend Dashboard 4

Średnia na temat tych samych danych co wykres Max oraz wykres z informacjami na temat użycia obcych bibliotek od zewnętrznych dostawców.

Prawie każdą z tych informacji możemy kliknąć, by uzyskać więcej informacji (np w przypadku Rules Violated) lub by wyedytować metrykę (np w przypadku Max).

Raport w pliku HTML

W tym samym momencie, gdy powstaje Dashboard w lokalizacji, którą określiliśmy na początku powstaje plik html z raportem na temat projektu. U mnie został utworzony folder o nazwie NDependOut w folderze głównym solucji. A w nim plik o nazwie NDependReport.html
W raporcie znajdują się diagramy, metryki oraz lista złamanych reguł mniej lub bardziej krytycznych:

Diagrams

Application Metrics

Rules

Jeśli chcecie zobaczyć ten raport „w akcji” – umieściłam go tutaj. Można po nim klikać i zobaczyć jak to wygląda na żywo.  W kolejnych częściach wrócimy do tego raportu a także tablicy Dashboard w Visual Studio, by przyjrzeć się bliżej poszczególnym opcjom.