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

480 views

Published on

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

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
480
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 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. 2. Все названные инструменты выполняют диагностику ошибок в Си/Си++ коде.Сравнение инструментов мы делали следующим образом. Для каждой группы ошибок (64-битныеи параллельные ошибки) была создана база паттернов ошибок, описанных в документации ксравниваемым инструментам. Участвующие в сравнении инструменты были протестированы навыявление ошибок каждого типа. Результаты приведены в статьях, содержащих детальныесравнения инструментов. По результатам составлена комплексная оценка инструментаследующим образом. Если ошибка диагностируется полностью, то участнику сравнениядобавляется 1 балл, если частично, то 0.5 балла, если не диагностируется, то 0 баллов. Затемвычисляется общая оценка в процентах: 100% - обнаружены все паттерны ошибок, 0% - необнаружено ни одного паттерна ошибок.Диагностика 64-битных ошибок Рисунок 1 - Результаты сравнения инструментов для диагностики 64-битных ошибокСтатья с описанием базы паттернов ошибок и детальным описанием сравнения: "Сравнениедиагностических возможностей анализаторов при проверке 64-битного кода".Поясним результаты сравнения. Речь не идет о том, что какой-то анализатор кода лучше, какой-тохуже. Но на диагностике конкретного типа ошибок ("64-битные ошибки") анализаторыпоказывают разные результаты и объективный выбор здесь к счастью возможен.
  3. 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. 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

×