- PVSM.RU - https://www.pvsm.ru -
Наша компания разрабатывает два анализатора кода для проверки проектов на языке Си/Си++: PVS-Studio и CppCat. В статье рассказывается, чем отличаются функциональные возможности этих инструментов.
PVS-Studio [1] и CppCat [2] это инструменты статического анализа кода [3]. Они сокращают стоимость нахождения многих ошибок и опечаток.
Первым нашим программным продуктом является анализатор PVS-Studio. Мы старались делать его максимально простым для изучения и использования. Но сохранить простоту нам не удалось, хотя мы приложили к этому много усилий.
Развиваясь, PVS-Studio обрастал всё новыми функциональными возможностями. Это неизбежно привело к осложнению интерфейса и настроек. Реализация пожеланий заказчиков привела к появлению нескольких сценариев использования, что дополнительно усложняет изучение инструмента.
Отказаться от функциональности нельзя. Но хотелось вновь сделать инструмент простым, лёгким и недорогим. Так появился облегченный анализатор CppCat.
CppCat предоставляет основной набор функций, позволяющий использовать его в повседневной работе. Анализатор легко попробовать и освоить.
Начните своё знакомство именно с анализатора CppCat. Если какой-то функциональности не будет хватать, то тогда посмотрите в сторону PVS-Studio. Эта статья поможет понять, какие функции есть в CppCat и PVS-Studio.
Таблица 1. Функциональные возможности анализаторов CppCat и PVS-Studio.
PVS-Studio и CppCat интегрируются в среду разработки Visual Studio и позволяют проверять исходный код приложений, написанный на языках: C, C++, C++/CLI, C++/CX.
Можно проверить как решение (solution) целиком, так и отдельные файлы.
PVS-Studio дополнительно позволяет проверить один проект или набор файлов, выбранных в дереве проекта.
Оба анализатора реализуют набор диагностических правил общего назначения. Эти диагностики позволяют выявлять следующие классы ошибок:
Запуск анализаторов PVS-Studio и CppCat может осуществляться автоматически. Этот режим включён по умолчанию. При обнаружении потенциально опасного кода, анализаторы уведомляют об этом всплывающим сообщением.
PVS-Studio и CppCat интегрируются в среду разработки Visual Studio 2010, 2012, 2013.
PVS-Studio умеет интегрироваться и в другие среды, про что будет рассказано ниже.
В CppCat мы решили не поддерживать Visual Studio 2005, 2008. Собранная с помощью PVS-Studio статистика показывает, что достаточно мало разработчиков продолжают использовать эти среды. Среды VS2005, VS2008 используется как правило в больших, сложных проектах, где переход на новые версии средств разработки сложен и дорогостоящ. Для интеграции в процесс разработки, функциональности CppCat скорее всего окажется недостаточно и потребуется использовать PVS-Studio.
При этом вы можете в одной из поддерживаемых версий Visual Studio указать использовать toolset от Visual Studio 2008. Тогда CppCat будет проверять проекты от Visual Studio 2008, работая, например, в среде Visual Studio 2013.
PVS-Studio предлагает несколько дополнительных наборов правил:
PVS-Studio предоставляет ряд функций, полезных при командной работе над большим проектом.
PVS-Studio поддерживает различные сценарии использования. Выбор конкретного сценария зависит от типа проекта и желаемых результатов. Поскольку все варианты предусмотреть невозможно, мы помогаем наших клиентам интегрировать PVS-Studio в их процесс разработки, настроить ночные запуски на сервере и так далее. При необходимости мы адаптируем PVS-Studio под задачи клиентов или разрабатываем дополнительные утилиты. Все эти вопросы решаются в индивидуальном порядке.
Основные режимы:
PVS-Studio поддерживает интеграцию в Visual Studio 2005, 2008.
PVS-Studio поддерживает интеграцию Embarcadero RAD Studio следующих версий:
Примечание. Анализ проектов, разрабатываемых в Embarcadero RAD Studio не пользуется популярность и возможно со временем мы откажемся от поддержки этих сред.
Диагностики PVS-Studio разделены на 3 группы приоритетов. Третий уровень — это диагностики, которые дают очень много ложных срабатываний или выявляют несущественные недочёты в коде. Эти диагностики отключены в PVS-Studio по умолчанию, но при желании их можно посмотреть. Анализатор CppCat эти сообщения не показывает совсем.
PVS-Studio Standalone сочетает в себе 3 основные функции:
В PVS-Studio мы реализуем диагностики, которые не представляют интереса для большинства разработчиков, но нужны некоторым из наших пользователей. Новые диагностики обсуждаются и реализуются в частном порядке.
PVS-Studio предоставляет более детальные настройки, чем CppCat. Вот некоторые из них:
В таблице не показана функциональность: подавление ложных срабатываний. Механизмы для работы с ложными срабатываниями есть и в PVS-Studio и в CppCat, но подходы разные. Поэтому этот пункт мы решили рассмотреть отдельно.
В CppCat и в PVS-Studio применяются разные подходы. В CppCat пользователь увидит предопределённый список диагностических сообщений. Отсутствие выбора не является недостатком, как может показаться. Выбраны диагностики с хорошим соотношением полезных сообщений к ложным сообщениям. Почему это так важно, даётся ответ здесь [16] (см. ответ на вопрос «Почему я проверяю свой код и ничего не нахожу?»).
PVS-Studio генерирует очень много сообщений. В нём есть диагностики, сделанные по заказу, есть 64-битные диагностики, которые генерируют много ложных срабатываний и так далее. Поэтому, в PVS-Studio имеется механизм включения/выключения отдельных диагностик или групп диагностик. При этом, мы не считаем наличие таких механизмов преимуществом. Их наличие является вынужденным.
PVS-Studio позволяет:
Теперь по поводу подавления отдельных ложных срабатываний.
Оба анализатора предоставляют следующие механизмы борьбы с ложными срабатываниями:
PVS-Studio дополнительно позволяет:
Более подробно все эти механизмы рассмотрены в документации.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Andrey Karpov. Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers [20].
Автор: Andrey2008
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/60714
Ссылки в тексте:
[1] PVS-Studio: http://www.viva64.com/ru/pvs-studio/
[2] CppCat: http://www.cppcat.com/
[3] статического анализа кода: http://www.viva64.com/ru/t/0046/
[4] Диагностика 64-битных ошибок: http://www.viva64.com/ru/viva64-tool/
[5] 64-битных ошибок: http://www.viva64.com/ru/t/0002/
[6] OpenMP-ошибки: http://www.viva64.com/ru/vivamp-tool/
[7] Микрооптимизации: http://www.viva64.com/ru/optimization/
[8] относительные пути: http://www.viva64.com/ru/d/0295/
[9] интеграции с системой отслеживания ошибок: http://www.viva64.com/ru/d/0264/
[10] Проверка кода с помощью PVS-Studio из командной строки: http://www.viva64.com/ru/d/0001/
[11] Прямая интеграция анализатора: http://www.viva64.com/ru/d/0007/
[12] Прямая интеграция в сборочный процесс MSBuild: http://www.viva64.com/ru/d/0296/
[13] Использование PVS-Studio вместе с системами continuous integration: http://www.viva64.com/ru/d/0006/
[14] Анализировать уже препроцессированные *.i файлы: http://www.viva64.com/ru/b/0219/
[15] Система мониторинга компиляции: http://www.viva64.com/ru/d/0323/
[16] здесь: http://www.viva64.com/ru/b/0132/
[17] PVS-Studio для Visual C++: http://www.viva64.com/ru/b/0222/
[18] Альтернатива PVS-Studio за $250: http://www.viva64.com/ru/b/0228/
[19] Сравнение анализаторов кода: CppCat, Cppcheck, PVS-Studio, Visual Studio: http://www.viva64.com/ru/b/0241/
[20] Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers: http://www.viva64.com/en/b/0258/
[21] Ответы на вопросы читателей статей про PVS-Studio и CppCat, версия 2014: http://www.viva64.com/ru/a/0085/
[22] Источник: http://habrahabr.ru/post/224153/
Нажмите здесь для печати.