Sonar quality

Preview:

DESCRIPTION

 

Citation preview

Докладчик: Артем Фурсенко

Что такое метрики кода?

Методы оценки качества исходного кода программы.

Контроль качества кода во время разработкиПоиск сложных или проблемных местУстановка приоритетов для рефакторингаСледование правилам

Зачем?

РазработчикамМенеджерам (для оценки работы команды)

Кому?

Количество строк кода (lines of code) — оценивает общее число строк кода (или количество низкоуровневых инструкций).

Цикломатическая сложность (cyclomatic complexity) — оценивает структурную сложность кода. Вычисляется по количеству возможных путей в коде программы. Например, если метод имеет большое число ветвлений, то, возможно, его стоит разбить на несколько более простых для понимания блоков?

Связность классов (coupling) — показывает насколько сильно один класс зависит от других. Невысокая связность означает большую простоту повторного использования кода.

Количество дубликатов (duplications) — показывает одинаковые блоки кода, для которых может быть смысл создания отдельного метода.

Основные метрики кода:

Покрытие unit-тестами (code coverage) — оценка размера кода, выполненного юнит-тестами.

Следование guidelines — проверка на следование общепринятым правилам написания кода.

Наличие комментариев — оценка документированности кода, “внутри” и “снаружи” методов.

Другие показатели качества кода:

...

Как оценивать код?

Sonar

Автоматизированное средство сбора метрик кода.

(http://sonarsource.org/)

Как это работает?

Sonar не является .NET решением изначально.Для него существует группа плагинов, которые допускают использование с .NET/C# (включая версию 4.0).

Каждый плагин отвечает за адаптацию отчетов некоторого инструмента оценки кода для Sonar.

Соответственно, для получение полной функциональности необходимы все эти инструменты :)

Source Monitor — сбор основных метрик кода.

Gallio — инструмент для запуска юнит-тестов. Нужен для оценки числа пройденных и неудачных тестов.

PartCover .NET / NCover — инструменты для оценки code coverage.

PartCover .NET создавался как бесплатная, открытая альтернатива к NCover.

Но PartCover умеет оценивать только lines coverage, в то время как Ncover позволяет оценить и branch coverage.

FxCop — инструмент статического анализа кода на соответствие guidelines. Оценивает IL код.

StyleCop — проверяет стиль исходного кода для языка C#.

Содержит такие категории правил: документация, разметка кода, наименования, читаемость, порядок блоков.

Запускаем

Установка Sonar и плагинов

После установки нужно скопировать плагины дляdotnet в $SONAR_HOME/extensions/plugins .

Установка внешних инструментов

Те, для которых были скопированы плагины.

И как же связать Sonar, инструменты и проект?

Maven

Apache Maven — инструмент сборки проектов, который в этом случае и будет “отправлять” отчеты в Sonar.

После установки и настройки самого Maven, к нему нужно подключить Maven Dotnet Plugin (maven-dotnet-plugin.appspot.com) и настроить файл settings.xml, добавив в него пути к инструментам оценки кода, а также к платформам .NET разных версий.

Установка Maven и его настройка

(maven.apache.org)

Сборочный файл Maven

Файлом проекта является pom.xml. Для целей Sonar он будет иметь такой вид:

Запускаем!

Файл pom.xml должен находиться в корневой папке проекта (там, где *.sln). После запуска самого Sonar, в папке проекта нужно вызвать такую команду:

mvn sonar:sonar

...После сборки проект появится в списке Sonar!

Итоги

Open source, бесплатность Управление и доступ через веб-интерфейс Простая интеграция с билд-серверами Гибкость в выборе правил и инструментов

Достоинства:

Относительная сложность установки Необходимость в дополнительном сборочном инструменте

специально для Sonar Зависимость от большого числа внешних инструментов

Недостатки:

http://www.sonarsource.org/ - домашняя страница Sonar.http://docs.codehaus.org/display/SONAR/.Net+plugin - плагины для работы с .NEThttp://maven.apache.org/ - Apache Mavenhttp://maven-dotnet-plugin.appspot.com/ - .NET плагин для Maven

http://www.campwoodsw.com/sourcemonitor.html - Source Monitorhttps://github.com/sawilde/partcover.net4 - Part Cover .NET 4http://www.gallio.org/ - Galliohttp://www.microsoft.com/downloads/en/details.aspx?FamilyID=917023f6-d5b7-41bb-bbc0-411a7d66cf3c - FxCophttp://stylecop.codeplex.com/ - StyleCop

Ссылки

Артем Фурсенкоartem.fursenko@gmail.com

skype: artem.fursenko

Вопросы?