Анализатор PVS-Studio

Статический анализ кода для C, C++ и C#

PVS-Studio - это инструмент для выявления ошибок в исходном коде программ, написанных на языках С, C++ и C#.

Работает в среде Windows и Linux.

PVS-Studio выполняет статический анализ кода и генерирует отчёт, помогающий программисту находить и устранять ошибки. PVS-Studio выполняет широкий спектр проверок кода, но наиболее силён в поисках опечаток и последствий неудачного Copy-Paste. Показательные примеры таких ошибок: V501, V517, V522, V523, V3001.

Основная ценность статического анализа заключается в его регулярном использовании, благодаря чему многие ошибки могут быть выявлены и устранены на самых ранних этапах. Нет смысла тратить 50 часов на поиск ошибки, которую можно найти благодаря анализу кода. Но еще раз подчеркнем. Основная польза статического анализа не в том, чтобы найти одну запрятанную ошибку в день перед релизом. А регулярно устранять десятки обычных ошибок день за днем.

Анализатор может запускаться ночью на сервере и сообщать о подозрительных местах в новом коде. В идеале ошибки вообще могут быть обнаружены и исправлены ещё до попадания в репозиторий. PVS-Studio может автоматически запускаться сразу после компилятора на только что модифицированных файлах. Это работает и в Windows, и в Linux.

Быстрый старт в Windows и Linux

PVS-Studio умеет интегрироваться в среду разработки Visual Studio 2010-2015. Если вы используете эту среду разработки, то скорее всего вам будет достаточно зайти в меню плагина PVS-Studio и выбрать команду "проверить проект".

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

Отметим только, что в PVS-Studio для Windows и Linux предусмотрены специальные утилиты, собирающие информацию о запусках компилятора. Эти инструменты позволяют быстро выполнить анализ проекта, собираемого любым способом. Вы можете быстро познакомиться с возможностями анализатора, не тратя время на его интеграцию с makefile или сборочным скриптом. См. описание утилиты Standalone (Windows) и pvs-studio-analyzer (Linux).

Используемые технологии

  • Сопоставление с шаблоном (pattern-based analysis) на основе абстрактного синтаксического дерева применяется для поиска мест в исходном коде, которые похожи на известные шаблоны кода с ошибкой.
  • Вывод типов (type inference) на основе семантической модели программы позволяет анализатору иметь полную информацию о всех переменных и выражениях, встречающихся в коде.
  • Символьное выполнение (symbolic execution) позволяет вычислять значения переменных, которые могут приводить к ошибкам, производить проверку диапазонов (range checking) значений
  • Анализ потока данных (data-flow analysis) используется для вычисления ограничений, накладываемых на значения переменных при обработке различных конструкций языка. Например, какие значения может принимать переменная внутри блоков if/else.
  • Аннотированние методов (method annotations) предоставляет больше информации об используемых методах, чем может быть получено путём анализа только их сигнатуры.

Особенности PVS-Studio

  • Автоматический анализ отдельных файлов после их перекомпиляции.
  • Удобная и простая интеграция с Visual Studio 2010-2015.
  • Удобная online-справка по всем диагностикам, которая доступна и из программы, и на сайте, а также документация в .pdf одним файлом. Около 400 печатных страниц документации.
  • Сохранение и загрузка результатов анализа: можно ночью проверить код, сохранить результаты, а утром загрузить их и смотреть.
  • Запуск из командной строки для проверки всего решения: позволяет интегрировать PVS-Studio в ночные сборки, чтобы утром у всех был свежий лог.
  • Отличная масштабируемость! Поддержка многоядерных и многопроцессорных систем с настройкой количества используемых ядер; поддержка IncrediBuild.
  • Mark as False Alarm – разметка в коде, чтобы не ругаться конкретной диагностикой в конкретном фрагменте файла.
  • Интерактивная фильтрация результатов анализа (лога) в окне PVS-Studio: по коду диагностики, по имени файла, по включению слова в текст диагностики.
  • Утилита BlameNotifier. Инструмент позволяет рассылать письма разработчикам об ошибках, которые PVS-Studio нашел во время ночного прогона.
  • Большое количество вариантов интеграции в проекты, разрабатываемые под Linux.
  • Mass Suppression – позволяет подавить все старые сообщения, чтобы анализатор выдавал 0 срабатываний. К подавленным сообщениям всегда можно вернуться позже. Возможность безболезненно внедрить PVS-Studio в существующий процесс разработки и сфокусироваться на ошибках только в новом коде.
  • Статистика ошибок в Excel – можно посмотреть темпы правки ошибок, количество ошибок во времени и т.п.
  • Автоматическая проверка на наличие новых версий PVS-Studio (как при работе в IDE, так и при ночных сборках).
  • Использование относительных путей в файлах отчета для возможности переноса отчета на другую машину.
  • CLMonitoring – проверка проектов, у которых нет файлов Visual Studio (.sln/.vcxproj); если вдруг вам не хватит функциональности CLMonitoring, то вы можете интегрировать PVS-Studio в любую Makefile-based систему сборки вручную.
  • pvs-studio-analyzer – утилита аналогичная CLMonitoring, но работающая под Linux.
  • Возможность исключить из анализа файлы по имени, папке или маске; возможность проверять файлы, модифицированные за последние N дней.
  • Интеграция с SonarQube.Это открытая платформа для обеспечения непрерывного контроля качества исходного кода.

Поддерживаемые языки и компиляторы

  • Windows. Visual Studio 2015 C, C++, C++/CLI, C++/CX (WinRT), C#
  • Windows. Visual Studio 2013 C, C++, C++/CLI, C++/CX (WinRT), C#
  • Windows. Visual Studio 2012 C, C++, C++/CLI, C++/CX (WinRT), C#
  • Windows. Visual Studio 2010 C, C++, C++/CLI, C#
  • Windows. MinGW C, C++
  • Windows/Linux. Clang C, C++
  • Linux. GCC C, C++

Клиенты PVS-Studio

Все клиенты

Заинтересовались? Вот что дальше:

  1. Скачайте PVS-Studio.
  2. Проверьте свой проект.
  3. Выпишите интересные ошибки, подготовьте презентацию.
  4. Покажите коллегам и начальству.

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++ и C#

goto PVS-Studio;