Сравнение PVS-Studio с другими анализаторами кода
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Сравнение PVS-Studio с другими анализаторами кода

on

  • 406 views

В статье приводится сравнение анализатора кода PVS-Studio с другими решениями в этой области. Так как PVS-Studio ...

В статье приводится сравнение анализатора кода PVS-Studio с другими решениями в этой области. Так как PVS-Studio содержит модули для диагностики 64-битных и параллельных ошибок, то и сравнение выполняется с разными группами инструментов.

Statistics

Views

Total Views
406
Views on SlideShare
406
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Сравнение PVS-Studio с другими анализаторами кода Document Transcript

  • 1. Сравнение PVS-Studio с другимианализаторами кодаАвтор: Евгений РыжковДата: 14.10.2009АннотацияВ статье приводится сравнение анализатора кода PVS-Studio с другими решениями в этой области.Так как PVS-Studio содержит модули для диагностики 64-битных и параллельных ошибок, то исравнение выполняется с разными группами инструментов.Подход к сравнениюПрограммисты-пользователи и разработчики статических анализаторов кода знают, как сложновыполнить сравнение инструментов этого типа между собой. Ведь помимо разных классовдиагностируемых ошибок часто даже диагностику ошибок одного типа трудно формализовать доуровня оценки "да/нет". Тем не менее, такое сравнение бывает необходимо делать для того,чтобы можно было выбирать из нескольких инструментов наиболее подходящее к конкретнойзадаче решение.В данной статье мы сравниваем анализатор кода PVS-Studio, разрабатываемый компанией ООО"СиПроВер" с аналогичными решениями. Статья предназначена для тех пользователейинструмента, которые хотят обоснованно выбрать анализатор кода для своих задач.Что с чем сравниваем?Сравнение основано на других статьях наших авторов, где более подробно описано, что и каксравнивалось. Читатели, которые хотят лучше разобраться с методикой и принципами сравнения,могут изучить и дополнительные материалы.Для сравнения мы выделим две группы ошибок: • "64-битные ошибки" - ошибки, возникающие при миграции кода с 32-битных на 64-битные системы или при разработке новых 64-битных приложений; • "параллельные ошибки" - ошибки параллельного программирования, возникающие при некорректном использовании технологии OpenMP.В номинации "64-битные ошибки" участвуют четыре решения: PVS-Studio (Viva64), PC-Lint, C++test,ключ /Wp64 компилятора Visual C++ или диагностика, осуществляемая 64-битной версиейкомпилятора Visual C++. Выбор обусловлен тем, что только названные решения имеютспециальную поддержку диагностики 64-битных ошибок, описанных в документации.В номинации "параллельные ошибки" сравниваются два решения: PVS-Studio (VivaMP) и IntelParallel Studio (Parallel Lint). Эти два инструмента предоставляют возможность диагностикипараллельных ошибок при использовании технологии OpenMP на Windows-системах.
  • 2. Все названные инструменты выполняют диагностику ошибок в Си/Си++ коде.Сравнение инструментов мы делали следующим образом. Для каждой группы ошибок (64-битныеи параллельные ошибки) была создана база паттернов ошибок, описанных в документации ксравниваемым инструментам. Участвующие в сравнении инструменты были протестированы навыявление ошибок каждого типа. Результаты приведены в статьях, содержащих детальныесравнения инструментов. По результатам составлена комплексная оценка инструментаследующим образом. Если ошибка диагностируется полностью, то участнику сравнениядобавляется 1 балл, если частично, то 0.5 балла, если не диагностируется, то 0 баллов. Затемвычисляется общая оценка в процентах: 100% - обнаружены все паттерны ошибок, 0% - необнаружено ни одного паттерна ошибок.Диагностика 64-битных ошибок Рисунок 1 - Результаты сравнения инструментов для диагностики 64-битных ошибокСтатья с описанием базы паттернов ошибок и детальным описанием сравнения: "Сравнениедиагностических возможностей анализаторов при проверке 64-битного кода".Поясним результаты сравнения. Речь не идет о том, что какой-то анализатор кода лучше, какой-тохуже. Но на диагностике конкретного типа ошибок ("64-битные ошибки") анализаторыпоказывают разные результаты и объективный выбор здесь к счастью возможен.
  • 3. Отдельно стоит упомянуть ключ компилятора /Wp64, имеющийся в среде Visual Studio. Хотя этотключ и не является инструментом анализа кода в отличие от других перечисленных решений, онучаствует в сравнении. Правда, возможности его для диагностики 64-битных ошибок крайнеограничены, чем и обусловлена низкая итоговая оценка. Подробнее об этом смотрите статью "64бита, /Wp64, Visual Studio 2008, Viva64 и все, все, все..."Диагностика параллельных ошибок Рисунок 2 - Результаты сравнения инструментов для диагностики параллельных OpenMP ошибокСтатья с описанием базы паттернов ошибок и детальным описанием сравнения: "Неудачнаяпопытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")".Данное сравнение значительно более некорректно, чем сравнение диагностики 64-битныхошибок. Дело в том, что количество диагностируемых паттернов ошибок в Intel Parallel Studioдовольно велико. Однако документация по этим паттернам крайне скудная. В идеале надорасширить базу паттернов за счет ошибок, диагностируемых в Intel Parallel Studio, однако сделатьэто пока невозможно. Поэтому и получилось, что Intel Parallel Studio набрал мало балов. Болееподробно ситуация описана в статье с детальным описанием сравнения.Итоги сравненияЦелью настоящей статьи не была попытка показать недостатки инструментов другихпроизводителей. Мы лишь пытались показать те задачи, в которых инструмент PVS-Studio силен.Таких задач две: • диагностика 64-битных ошибок; • диагностика параллельных OpenMP ошибок.В этих двух задачах наш инструмент превосходит аналогичные решения. Для других задачразумно использовать более подходящие инструменты.
  • 4. Библиографический список 1. Андрей Карпов. Сравнение диагностических возможностей анализаторов при проверке 64- битного кода. http://www.viva64.com/art-1-1-2853247683.html 2. Андрей Карпов. 64 бита, /Wp64, Visual Studio 2008, Viva64 и все, все, все... http://www.viva64.com/art-1-1-4041271351.html 3. Андрей Карпов. Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint"). http://www.viva64.com/art-3-1-2993687482.html