SlideShare una empresa de Scribd logo
1 de 23
Докладчик: Артем Фурсенко
Что такое метрики кода? Методы оценки качества исходного кода программы. ,[object Object],[object Object],[object Object],[object Object],Зачем? ,[object Object],[object Object],Кому?
[object Object],[object Object],[object Object],[object Object],Основные метрики кода:
[object Object],[object Object],[object Object],Другие показатели качества кода: ...
Как оценивать код?
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!
Итоги
[object Object],[object Object],[object Object],[object Object],Достоинства:
[object Object],[object Object],[object Object],Недостатки:
http://www.sonarsource.org/  - домашняя страница Sonar. http://docs.codehaus.org/display/SONAR/.Net+plugin  - плагины для работы с .NET http://maven.apache.org/  - Apache Maven http://maven-dotnet-plugin.appspot.com/  - .NET плагин для Maven http://www.campwoodsw.com/sourcemonitor.html  - Source Monitor https://github.com/sawilde/partcover.net4  - Part Cover .NET 4 http://www.gallio.org/  - Gallio http://www.microsoft.com/downloads/en/details.aspx?FamilyID=917023f6-d5b7-41bb-bbc0-411a7d66cf3c  - FxCop http://stylecop.codeplex.com/  - StyleCop Ссылки
Артем Фурсенко [email_address] skype: artem.fursenko Вопросы?

Más contenido relacionado

La actualidad más candente

Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...Tatyanazaxarova
 
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...QA Club Minsk
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинMail.ru Group
 
Beginning mef by Владимир Лисник
Beginning mef by Владимир ЛисникBeginning mef by Владимир Лисник
Beginning mef by Владимир ЛисникAlex Tumanoff
 
Тестирование ПО (лекция 1)
Тестирование ПО (лекция 1)Тестирование ПО (лекция 1)
Тестирование ПО (лекция 1)Igor Khmelnytskyy
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Tatyanazaxarova
 
Специфика разработки и тестирования статического анализатора
Специфика разработки и тестирования статического анализатораСпецифика разработки и тестирования статического анализатора
Специфика разработки и тестирования статического анализатораAndrey Karpov
 
Тестирование ПО (лекция 2)
Тестирование ПО (лекция 2)Тестирование ПО (лекция 2)
Тестирование ПО (лекция 2)Igor Khmelnytskyy
 
Как создать качественный статический анализатор
Как создать качественный статический анализаторКак создать качественный статический анализатор
Как создать качественный статический анализаторAndrey Karpov
 
Тестирование ПО (лекция 3)
Тестирование ПО (лекция 3)Тестирование ПО (лекция 3)
Тестирование ПО (лекция 3)Igor Khmelnytskyy
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программTatyanazaxarova
 
Unit testing
Unit testingUnit testing
Unit testingISsoft
 

La actualidad más candente (20)

МиСПИСиТ (разработка программного модуля)
МиСПИСиТ (разработка программного модуля)МиСПИСиТ (разработка программного модуля)
МиСПИСиТ (разработка программного модуля)
 
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
 
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Net framework
Net frameworkNet framework
Net framework
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
 
МиСПИСиТ (тестирование и отладка)
МиСПИСиТ (тестирование и отладка)МиСПИСиТ (тестирование и отладка)
МиСПИСиТ (тестирование и отладка)
 
Beginning mef by Владимир Лисник
Beginning mef by Владимир ЛисникBeginning mef by Владимир Лисник
Beginning mef by Владимир Лисник
 
Введение в MEF
Введение в MEFВведение в MEF
Введение в MEF
 
Тестирование ПО (лекция 1)
Тестирование ПО (лекция 1)Тестирование ПО (лекция 1)
Тестирование ПО (лекция 1)
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
МиСПИСиТ (общие принципы разработки)
МиСПИСиТ (общие принципы разработки)МиСПИСиТ (общие принципы разработки)
МиСПИСиТ (общие принципы разработки)
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?
 
Специфика разработки и тестирования статического анализатора
Специфика разработки и тестирования статического анализатораСпецифика разработки и тестирования статического анализатора
Специфика разработки и тестирования статического анализатора
 
Тестирование ПО (лекция 2)
Тестирование ПО (лекция 2)Тестирование ПО (лекция 2)
Тестирование ПО (лекция 2)
 
Как создать качественный статический анализатор
Как создать качественный статический анализаторКак создать качественный статический анализатор
Как создать качественный статический анализатор
 
Тестирование ПО (лекция 3)
Тестирование ПО (лекция 3)Тестирование ПО (лекция 3)
Тестирование ПО (лекция 3)
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программ
 
Unit testing
Unit testingUnit testing
Unit testing
 

Destacado

Destacado (6)

Maven lifecycle
Maven lifecycleMaven lifecycle
Maven lifecycle
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Do you know what you are testing?
Do you know what you are testing?Do you know what you are testing?
Do you know what you are testing?
 
Sonar Overview
Sonar OverviewSonar Overview
Sonar Overview
 
How to make your functional tests really quick
How to make your functional tests really quickHow to make your functional tests really quick
How to make your functional tests really quick
 
Tracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubeTracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQube
 

Similar a Sonar quality

метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDDIosif Itkin
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Andrey Karpov
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеYakubovichDA
 
Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеTatyanazaxarova
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rusMaxim Shaptala
 
Как мы измеряем наши проекты
Как мы измеряем наши проектыКак мы измеряем наши проекты
Как мы измеряем наши проектыRambler Android
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoftKewpaN
 
Технологии разработки ПО
Технологии разработки ПОТехнологии разработки ПО
Технологии разработки ПОAnton Konushin
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовSQALab
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPmikhailshurgulaya
 
Presentation for students about Laravel.pptx
Presentation for students about Laravel.pptxPresentation for students about Laravel.pptx
Presentation for students about Laravel.pptxGetOverHere
 

Similar a Sonar quality (20)

Java one presentation
Java one presentationJava one presentation
Java one presentation
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDD
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программирование
 
Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработке
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Как мы измеряем наши проекты
Как мы измеряем наши проектыКак мы измеряем наши проекты
Как мы измеряем наши проекты
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
 
Технологии разработки ПО
Технологии разработки ПОТехнологии разработки ПО
Технологии разработки ПО
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
 
TAP
TAPTAP
TAP
 
Presentation for students about Laravel.pptx
Presentation for students about Laravel.pptxPresentation for students about Laravel.pptx
Presentation for students about Laravel.pptx
 

Más de dotNETUserGroupDnipro (11)

Mercurial presentation
Mercurial presentationMercurial presentation
Mercurial presentation
 
Ef code first
Ef code firstEf code first
Ef code first
 
Rx for .net
Rx for .netRx for .net
Rx for .net
 
Winmobile
WinmobileWinmobile
Winmobile
 
Soft serve prism
Soft serve prismSoft serve prism
Soft serve prism
 
Html5
Html5Html5
Html5
 
Erp microsoft dynamics
Erp microsoft dynamicsErp microsoft dynamics
Erp microsoft dynamics
 
Css 3 overview
Css 3 overviewCss 3 overview
Css 3 overview
 
Mvc3
Mvc3Mvc3
Mvc3
 
Balsamiq
BalsamiqBalsamiq
Balsamiq
 
Azure for ug
Azure for ugAzure for ug
Azure for ug
 

Sonar quality

  • 2.
  • 3.
  • 4.
  • 6. Sonar Автоматизированное средство сбора метрик кода. ( http://sonarsource.org/ )
  • 7.  
  • 8. Как это работает? Sonar не является .NET решением изначально. Для него существует группа плагинов, которые допускают использование с .NET/C# (включая версию 4.0). Каждый плагин отвечает за адаптацию отчетов некоторого инструмента оценки кода для Sonar. Соответственно, для получение полной функциональности необходимы все эти инструменты :)
  • 9. Source Monitor — сбор основных метрик кода.
  • 10. Gallio — инструмент для запуска юнит-тестов. Нужен для оценки числа пройденных и неудачных тестов.
  • 11. PartCover .NET / NCover — инструменты для оценки code coverage. PartCover .NET создавался как бесплатная, открытая альтернатива к NCover. Но PartCover умеет оценивать только lines coverage, в то время как Ncover позволяет оценить и branch coverage.
  • 12. FxCop — инструмент статического анализа кода на соответствие guidelines. Оценивает IL код.
  • 13. StyleCop — проверяет стиль исходного кода для языка C#. Содержит такие категории правил: документация, разметка кода, наименования, читаемость, порядок блоков.
  • 15. Установка Sonar и плагинов После установки нужно скопировать плагины для dotnet в $SONAR_HOME/extensions/plugins . Установка внешних инструментов Те, для которых были скопированы плагины. И как же связать Sonar, инструменты и проект?
  • 16. Maven Apache Maven — инструмент сборки проектов, который в этом случае и будет “отправлять” отчеты в Sonar. После установки и настройки самого Maven, к нему нужно подключить Maven Dotnet Plugin ( maven-dotnet-plugin.appspot.com ) и настроить файл settings.xml, добавив в него пути к инструментам оценки кода, а также к платформам .NET разных версий. Установка Maven и его настройка ( maven.apache.org )
  • 17. Сборочный файл Maven Файлом проекта является pom.xml. Для целей Sonar он будет иметь такой вид:
  • 18. Запускаем! Файл pom.xml должен находиться в корневой папке проекта (там, где *.sln). После запуска самого Sonar, в папке проекта нужно вызвать такую команду: mvn sonar:sonar ... После сборки проект появится в списке Sonar!
  • 20.
  • 21.
  • 22. http://www.sonarsource.org/ - домашняя страница Sonar. http://docs.codehaus.org/display/SONAR/.Net+plugin - плагины для работы с .NET http://maven.apache.org/ - Apache Maven http://maven-dotnet-plugin.appspot.com/ - .NET плагин для Maven http://www.campwoodsw.com/sourcemonitor.html - Source Monitor https://github.com/sawilde/partcover.net4 - Part Cover .NET 4 http://www.gallio.org/ - Gallio http://www.microsoft.com/downloads/en/details.aspx?FamilyID=917023f6-d5b7-41bb-bbc0-411a7d66cf3c - FxCop http://stylecop.codeplex.com/ - StyleCop Ссылки
  • 23. Артем Фурсенко [email_address] skype: artem.fursenko Вопросы?