Для получения триального ключа
заполните форму ниже
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Мне интересно попробовать плагин на:
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

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

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

14 Окт 2009

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

Поддержка OpenMP была прекращена в PVS-Studio после версии 5.20. По всем возникшим вопросам вы можете обратиться в нашу поддержку. Данная статья устарела и не отражает нашего текущего отношения к вопросу сравнения возможностей различных анализаторов кода. Просим познакомиться со статьёй "Почему мы не пишем о сравнении PVS-Studio с другими статическими анализаторами кода".

Подход к сравнению

Программисты-пользователи и разработчики статических анализаторов кода знают, как сложно выполнить сравнение инструментов этого типа между собой. Ведь помимо разных классов диагностируемых ошибок часто даже диагностику ошибок одного типа трудно формализовать до уровня оценки "да/нет". Тем не менее, такое сравнение бывает необходимо делать для того, чтобы можно было выбирать из нескольких инструментов наиболее подходящее к конкретной задаче решение.

В данной статье мы сравниваем анализатор кода 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) и Intel Parallel Studio (Parallel Lint). Эти два инструмента предоставляют возможность диагностики параллельных ошибок при использовании технологии OpenMP на Windows-системах.

Все названные инструменты выполняют диагностику ошибок в Си/Си++ коде.

Сравнение инструментов мы делали следующим образом. Для каждой группы ошибок (64-битные и параллельные ошибки) была создана база паттернов ошибок, описанных в документации к сравниваемым инструментам. Участвующие в сравнении инструменты были протестированы на выявление ошибок каждого типа. Результаты приведены в статьях, содержащих детальные сравнения инструментов. По результатам составлена комплексная оценка инструмента следующим образом. Если ошибка диагностируется полностью, то участнику сравнения добавляется 1 балл, если частично, то 0.5 балла, если не диагностируется, то 0 баллов. Затем вычисляется общая оценка в процентах: 100% - обнаружены все паттерны ошибок, 0% - не обнаружено ни одного паттерна ошибок.

Диагностика 64-битных ошибок

a0052_PVS-Studio_comparison_ru/image1.png

Рисунок 1 - Результаты сравнения инструментов для диагностики 64-битных ошибок

Статья с описанием базы паттернов ошибок и детальным описанием сравнения: "Сравнение диагностических возможностей анализаторов при проверке 64-битного кода".

Поясним результаты сравнения. Речь не идет о том, что какой-то анализатор кода лучше, какой-то хуже. Но на диагностике конкретного типа ошибок ("64-битные ошибки") анализаторы показывают разные результаты и объективный выбор здесь к счастью возможен.

Отдельно стоит упомянуть ключ компилятора /Wp64, имеющийся в среде Visual Studio. Хотя этот ключ и не является инструментом анализа кода в отличие от других перечисленных решений, он участвует в сравнении. Правда, возможности его для диагностики 64-битных ошибок крайне ограничены, чем и обусловлена низкая итоговая оценка. Подробнее об этом смотрите статью "64 бита, /Wp64, Visual Studio 2008, Viva64 и все, все, все..."

Диагностика параллельных ошибок

a0052_PVS-Studio_comparison_ru/image2.png

Рисунок 2 - Результаты сравнения инструментов для диагностики параллельных OpenMP ошибок

Статья с описанием базы паттернов ошибок и детальным описанием сравнения: "Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")".

Данное сравнение значительно более некорректно, чем сравнение диагностики 64-битных ошибок. Дело в том, что количество диагностируемых паттернов ошибок в Intel Parallel Studio довольно велико. Однако документация по этим паттернам крайне скудная. В идеале надо расширить базу паттернов за счет ошибок, диагностируемых в Intel Parallel Studio, однако сделать это пока невозможно. Поэтому и получилось, что Intel Parallel Studio набрал мало балов. Более подробно ситуация описана в статье с детальным описанием сравнения.

Итоги сравнения

Целью настоящей статьи не была попытка показать недостатки инструментов других производителей. Мы лишь пытались показать те задачи, в которых инструмент PVS-Studio силен. Таких задач две:

  • диагностика 64-битных ошибок;
  • диагностика параллельных OpenMP ошибок.

В этих двух задачах наш инструмент превосходит аналогичные решения. Для других задач разумно использовать более подходящие инструменты.

Библиографический список

Популярные статьи по теме
Единороги компании PVS-Studio

Дата: 30 Авг 2022

Автор: Андрей Карпов

Скорее всего вы перешли на эту статью, заинтересовавшись одним из наших рисунков единорогов. Приятно видеть ваш интерес. Сейчас мы расскажем, почему рисуем этих единорогов, что они означают и чем воо…
Обрабатывать ли в PVS-Studio вывод других инструментов?

Дата: 26 Май 2022

Автор: Андрей Карпов

Анализатор PVS-Studio умеет "схлопывать" повторяющиеся предупреждения. Предоставляет возможность задать baseline, что позволяет легко внедрять статический анализ в legacy-проекты. Стоит ли предостави…
15000 ошибок в открытых проектах

Дата: 24 Май 2022

Автор: Андрей Карпов

Количество багов в нашей коллекции перевалило за отметку 15000. Именно такое количество ошибок обнаружила команда PVS-Studio в различных открытых проектах. Особенно интересно, что это всего лишь побо…
Комментарии в коде как вид искусства

Дата: 04 Май 2022

Автор: Сергей Хренов

Приветствую всех программистов, а также сочувствующих. Кто из нас хотя бы раз в жизни не оставлял комментарии в коде? Был ли это ваш код, а может, чужой? Что за комментарии вы написали: полезные или …
Visual Studio 2022 стильно и свежо. История о её поддержке в PVS-Studio

Дата: 15 Фев 2022

Автор: Николай Миронов

Кажется, анонс Visual Studio 2022 был только недавно, и вот она уже вышла. Это означало ровно одно – поддержать данную IDE нужно в ближайшем релизе PVS-Studio. О том, с какими сложностями пришлось ст…

Комментарии (0)

Следующие комментарии
Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно. Хотите узнать подробнее?
Принять