Nauka na własnych błędach z NDepend

By | July 23, 2016

O ReSharperze słyszał niemalże każdy, kto zajmuje się programowaniem w .NET. I o ile jest to rozszerzenie bardzo przydatne, to dziś chciałbym Wam opowiedzieć o nieco innym narzędziu, które co prawda nie odwali tyle roboty za Ciebie, ale jest w stanie zrobić bardzo wiele dla Ciebie. Mowa o NDpend, który jest w stanie przeanalizować nasz kod i poinformować nas, gdzie autor kodu dał … ciała ;).

Słowem wstępu zaznaczę, że w dev-blogosferze pojawiło się ostatnio kilka bardzo ciekawych postów o NDepend dlatego nie będę opowiadał zbyt długo o tym czym jest NDepend i jak działa, a podlinkuję na końcu posty, które czytałem i do których lektury zachęcam. Zamiast tego spojrzę na niego bardziej pod kątem osoby z niewielkim doświadczeniem, która może z wydobytych przez to rozszerzenie danych bardzo wiele dowiedzieć się o swoim kodzie i popełnianych przez siebie błędach, a także pomóc się odnaleźć w kodzie pisanym przez kogoś innego i znaleźć miejsca, w których można nanieść pewne poprawki.

Zacznijmy standardowo od tego, co oferuje nam NDpend. Jest to zewnętrzne narzędzie, które dokonuje analizy naszego kodu pod kątem łamania reguł podstawowego programowania obiektowego, zbytniego skomplikowania kodu, zbyt dużych uprawnień do niektórych metod czy tego, że pewne klasy mogłyby być strukturami. Analiza kodu nie trwa długo i przedstawiona jest w formie przejrzystej listy zawierającej nazwę “przewinienia”, jego ważność oraz ilość wystąpień w kodzie. W zasięgu kilku kliknięć pozostaje informacja o tym w jakiej klasie powinniśmy dokonać poprawek i jakie problemy powinny przykuć naszą uwagę. Oprócz tego możemy przyjrzeć się kilku generowanym przez NDepend wykresom, które przejrzyście i czytelnie prezentują informację na temat naszego kodu (wykres zależności jest genialny i dosyć mocno pomógł mi z pewnym problemem!). 

W pierwszym akapicie nieprzypadkowo wspomniałem o ReSharperze, który jest jednym z najpopularniejszych, jeśli nie najpopularniejszym, komercyjnym rozszerzeniem dla Visual Studio. Sam z niego nie korzystam z bardzo prostego powodu. Chociaż bardzo pomaga, to niestety jednocześnie wyręcza w samodzielnym myśleniu i robi za mnie zbyt wiele. NDepend nie próbuje myśleć i decydować za dewelopera, nie nadpisuje skrótów klawiszowych i nie dokonuje zmian automatycznie. Rozwiązanie takie chociaż bardziej czasochłonne pozwala na o wiele większą kontrolę nad kodem, a osoby które podobnie jak ja nie mają ogromnego doświadczenia, mogą dowiedzieć się bardzo wiele, o niedociągnięciach w swoim kodzie.

NDepend wypróbowałem jak do tej pory na dwóch projektach i niestety nie mogę pokazać ich kodu oraz wyników, które wygenerowała aplikacja. Zauważyłem jednak u siebie kilka złych nawyków, które powoli staram się wykorzeniać. Co ciekawe niektóre z problemów, które znalazł w moim kodzie NDepend były dla mnie niezauważalne gołym okiem. Dopiero po przyjrzeniu się wynikom wnikliwej analizy zauważyłem, że ogromną część mojego kodu można uprościć i/lub ulepszyć, a niektóre potknięcia występują o wiele zbyt często, by były przypadkiem, więc wypadałoby zwrócić na nie nieco większą uwagę w przyszłości.

Narzędzie, o którym piszę nie jest najtańszym z dostępnych na rynku (licencja kosztuje 299 EUR w chwili publikacji), ale mogę szczerze powiedzieć, że jest warte tej kwoty. Zapraszam chociaż do wypróbowania go korzystając z 14 dniowego okresu próbnego. Aplikacja NDpend jest dostępna pod tym linkiem. Jeśli masz przed sobą kawałek kodu, który chcesz poprawić i nie wiesz za co się chwycić lub chcesz popracować nad swoim kodem i nie masz pojęcia, gdzie jest najwięcej miejsca do poprawy, to ściągnięcie triala będzie świetną decyzją.

A tak o NDepend pisali inni:

Konrad KokosaNDepend – spojrzenie na .NET Core

Michał DymelBecoming a better developer with nDepend

Dariusz PawlukiewiczNDepend – a powerful code analysis tool

Piotr GankiewiczNDepend – the king of code metrics

Atrur OgonowskiAnalysing the quality of code with NDepend

Jakub Gutkowski – nDepend – długa historia o tym jak zaoszczędziłem godziny żmudnej pracy