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

Sonar quality

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Sonar quality

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

Page 2: Sonar quality

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

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

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

Зачем?

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

Кому?

Page 3: Sonar quality

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

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

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

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

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

Page 4: Sonar quality

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

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

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

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

...

Page 5: Sonar quality

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

Page 6: Sonar quality

Sonar

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

(http://sonarsource.org/)

Page 7: Sonar quality
Page 8: Sonar quality

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

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

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

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

Page 9: Sonar quality

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

Page 10: Sonar quality

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

Page 11: Sonar quality

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

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

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

Page 12: Sonar quality

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

Page 13: Sonar quality

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

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

Page 14: Sonar quality

Запускаем

Page 15: Sonar quality

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

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

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

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

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

Page 16: Sonar quality

Maven

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

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

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

(maven.apache.org)

Page 17: Sonar quality

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

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

Page 18: Sonar quality

Запускаем!

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

mvn sonar:sonar

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

Page 19: Sonar quality

Итоги

Page 20: Sonar quality

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

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

Page 21: Sonar quality

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

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

Недостатки:

Page 22: Sonar quality

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

Ссылки

Page 23: Sonar quality

Артем Фурсенко[email protected]

skype: artem.fursenko

Вопросы?