Измерете качеството на вашия .Net код с NDepend

Оценяването на качеството на кода на приложението често е субективен процес. Ето защо се обръщаме към кодови метрики - количествени измервания, които дават ценна информация за кода на нашето приложение. Разработчиците могат да се възползват от показателите на кода, за да разберат качеството на кода, да получат представа за потенциалните проблеми и да идентифицират кои типове и методи трябва да бъдат рефакторирани, за да се подобри качеството.

Инструментите за анализ на статичен код се използват за измерване на качеството на кода в приложение, без да се налага да се изпълнява приложението. Има много инструменти за анализ на статичен код за .Net. Те включват FxCop, StyleCop, ReSharper, CodeIt.Right, NDepend и др. Тази статия представя дискусия за това как можем да използваме NDepend, за да визуализираме качеството на кода и да приемем мерки за подобряването му.

Какво е NDepend и защо да го използвам?

NDepend е статичен анализатор на код, който се интегрира добре с Visual Studio и предоставя ценни показатели за определяне на качеството на кода. NDepend показва тези показатели под формата на списъци, матрици, графики, дървесни карти и диаграми. Заедно с тези показатели, NDepend може да анализира вашия код и да докладва за нарушения срещу голяма база данни с правила.

NDepend запазва резултатите от всеки анализ, така че можете да сравнявате резултатите, след като сте подобрили покритието на кода или качеството на кода. Може да се изпълнява както като самостоятелно приложение, така и като разширение в Visual Studio. И можете да се възползвате от разширението NDepend Azure DevOps, за да интегрирате NDepend с вашите проекти в Azure.

Следват някои от поразителните характеристики на NDepend:

  • Голям набор от правила на кода за проверка за съответствие
  • Много диаграми и диаграми за преглед на показатели на кода
  • Интегрира се добре с Visual Studio 2010, 2012, 2013, 2015 и 2017
  • Позволява ви да изследвате зависимостите между модулите
  • Предоставя CQLinq (Кодова заявка през LINQ) за персонализиране на анализа
  • Измерва покритие на кода
  • Идентифицира труден за поддръжка код и оценява техническия дълг 
  • Създава диаграми на тенденциите

Първи стъпки с NDepend

За да започнете да използвате NDepend, ще трябва да изтеглите и инсталирате копие от него. Можете да изтеглите пробно копие на NDepend от тук. Той ще бъде опакован като .zip файл. 

След като разархивирате .zip файла на инсталатора на NDepend, вътре ще намерите следните файлове:

  1. NDepend.Console - използва се за интеграция с процеса на изграждане
  2. NDepend.PowerTools - колекция от статични анализатори с отворен код
  3. NDepend.VisualStudioExtension.Installer - инсталира разширението Visual Studio за NDepend
  4. VisualNDepend - GUI клиент за NDepend

Можете да инсталирате разширението Visual Studio на NDepend по един от следните два начина:

  1. Стартирайте NDepend.VisualStudioExtension.Installer
  2. Стартирайте VisualNDepend и изберете „Инсталиране на разширението на Visual Studio“

След като Visual Studio Extension за NDepend бъде инсталиран, можете да използвате метриките, правилата, отчетите, графиките, резултатите от анализатора и инструментите от IDE на Visual Studio. Можете също така да се възползвате от Visual NDepend, за да анализирате вашите решения и проекти, без да се налага да стартирате Visual Studio.

Разширението Visual Studio за NDepend е достъпно за Visual Studio 2010 чрез Visual Studio 2017. Имайте предвид, че го използвам с Visual Studio 2017.

Анализиране на изходния код с NDepend

За да започнете да анализирате изходния си код, можете да кликнете върху „Анализиране на VS решения и VS проекти“. Другите налични опции са „Анализирайте .Net сглобки в папка“, „Анализирайте набор от .Net сглобки“ и „Сравнете 2 версии на кодова база“. Тази последна опция ви позволява да сравнявате две компилации - хубава функция!

За улеснение ще използвам изходния код от една от последните ми статии тук („Как да използвам Lamar в ASP.Net Core“). След като щракнете върху „Анализирайте VS решения и VS проекти“, ще се покаже нов прозорец, както е показано на Фигура 1 по-долу.

Вече можете да кликнете върху „Преглед“ и да посочите файла с решение на проекта, който искате да анализира NDepend.

И накрая, кликнете върху „Анализ на единичен .Net монтаж“, за да започнете анализа, както е показано на Фигура 3 по-долу.

Това ще стартира анализ на кода за избрания проект. Когато анализът приключи, NDepend ще покаже прозорец със следните опции:

  • Преглед на таблото за управление NDepend
  • Показване на NDepend интерактивна графика
  • Правила на кода на NDepend на браузъра
  • Затворете диалоговия прозорец

Нека да изберем да видим таблото за управление NDepend. Ето как изглежда изходът: 

NDepend ви показва редовете на кода, информация за видовете, дълга, коментарите в изходния код, информация за покритието, сложността на метода, качествените порти и правилата, които са били нарушени и други проблеми.

NDepend функции

Графика на зависимостта и матрица на зависимостите

NDepend ви показва също графика на зависимост и матрицата на зависимостите на вашия код. Докато първият предоставя графичен изглед на зависимостите във вашия проект, вторият предоставя табличен изглед на вашия код, организиран от зависимости от пространства от имена и типове.

Диаграми за тенденции

Графиките на тенденциите са налични в таблото за управление. Тези диаграми предоставят преглед на това как качеството на изходния код на проекта се променя с течение на времето. Можете също така да създадете свои собствени графики на тенденции.

Цикломатична сложност

Цикломатичната сложност е количествена мярка за линейно независимите пътища в изходния код, която може да ви помогне да разберете сложността на вашата програма и да подобрите покритието на кода. Можете да се възползвате от NDepend, за да анализирате цикломатичната сложност в кода на вашето приложение. Можете да прочетете повече за цикломатичната сложност в тази статия.

Заявки с помощта на CQLinq

CQLinq е една от най-поразителните характеристики на NDepend. CQLinq ви позволява да запитвате .Net код с помощта на LINQ. Можете да се възползвате от CQLinq, за да запитвате кода на дълговете, проблемите, правилата и качествените порти.

Нека разгледаме един пример. Следващата заявка за CQLinq показва имената на методите и цикломатичната сложност на абстрактни методи, които имат цикломатична сложност по-голяма от 20, подредени по низходящ ред на стойността на цикломатичната сложност.

от m в Application.Methods

където m.CyclomaticComplexity> = 20 &&! m.IsAbstract

ред от m.CyclomaticComplexity низходящ

изберете нов {m, m.CyclomaticComplexity}

Ето още един пример за CQLinq заявка. Този при изпълнение ще покаже имената на методите, които имат повече от 100 реда код.

от m в Методи, където m.NbLinesOfCode> 100 изберете m

За да научите повече за CQLinq, можете да се обърнете към документацията за NDepend тук. 

NDepend е инструмент за статичен анализ на код, който може да ви даде ценна информация за кода на вашето приложение. Можете да стартирате NDepend като самостоятелно приложение или интегрирано в Visual Studio. Въпреки че NDepend не е безплатен, той има разумни цени предвид мощните му възможности и е достъпен за всички най-нови версии на Visual Studio.

Ако искате чудесен ресурс за изучаване на NDepend, горещо препоръчвам курса по Pluralsight „Практически NDepend“ от Ерик Дитрих.