Документация
ОС Аврора 5.1.5

Сравнение статических анализаторов кода для C/C++

Обзор инструментов

Cppcheck

Тип: Статический анализатор общего назначения
Лицензия: GPL (Open Source)
Особенности:

  • низкое количество ложных срабатываний;
  • поддержка пользовательских правил;
  • частичная поддержка MISRA.

Clang Static Analyzer

Тип: Глубокий анализатор на основе символьного выполнения
Лицензия: Apache 2.0 (Open Source)
Особенности:

  • интеграция с компилятором Clang;
  • обнаружение сложных сценариев выполнения;
  • визуализация путей ошибок.

PVS-Studio

Тип: Промышленный анализатор общего назначения
Лицензия: Проприетарная
Особенности:

  • интеграция с SonarQube;
  • механизм инкрементального анализа;
  • детализированные отчеты с примерами исправлений.

Semgrep

Тип: Анализатор на основе шаблонов
Лицензия: LGPL (Open Source), есть коммерческая версия Semgrep Pro Особенности:

  • простота создания правил;
  • поддержка 20+ языков;
  • нативная интеграция с GitHub/GitLab.

Svace

Тип: Промышленный анализатор для соответствия стандартам
Лицензия: Проприетарная
Особенности:

  • полная поддержка MISRA, AUTOSAR;
  • оптимизирован для больших проектов;
  • русскоязычная документация.

Сравнительные таблицы

Условные обозначения:

  • Да — полноценная поддержка;
  • Частично — ограниченная поддержка;
  • Ограниченная — поддержка с ограничениями.
  • Нет — отсутствует поддержка;

Сравнение основных характеристик анализаторов

Характеристика Cppcheck Clang Static Analyzer PVS-Studio Semgrep Svace
Тип лицензии GPL (Open) Apache 2.0 (Open) Проприетарная LGPL (Open) Проприетарная
Поддержка языков C/C++ C/C++/Obj-C C, C++, C#, Java 20+ языков C/C++
Метод анализа Эвристики Символьное выполнение Гибридный Сопоставление шаблонов Гибридный
Стандарты (MISRA) Частичная Нет Полная Частичная Полная
Требует компиляции Нет Да Нет Нет Да
GUI интерфейс Да (Cppcheck-gui) Через Clang Да Нет Да

Сравнение поддерживаемых проверок

Тип проверки Cppcheck Clang PVS-Studio Semgrep Svace
Утечки памяти Да Да Да Частично Да
Переполнение буфера Да Да Да Да Да
Гонки данных Нет Частично Да Частично Да
Уязвимости безопасности Да Да Да Да Да
Dead code Да Да Да Нет Да
Неопределённое поведение Да Да Да Нет Да
Кастомные правила Да Частично Частично Да Да

Сравнение производительности

Параметр Cppcheck Clang PVS-Studio Semgrep Svace
Скорость анализа Высокая Низкая Средняя Очень высокая Средняя
Потребление памяти Низкое Высокое Высокое Низкое Высокое
Масштабируемость Хорошая Ограниченная Отличная Отличная Хорошая
Ложные срабатывания Низкий % Средний % Низкий % Высокий % Низкий %

Сравнение интеграции

Возможность Cppcheck Clang PVS-Studio Semgrep Svace
Поддержка Windows Да Да Да Да Да
Поддержка Linux Да Да Да Да Да
Поддержка macOS Да Да Да Да Ограниченная
Плагины для IDE Да Да Да Да Да
API для интеграции Ограниченный Да Да Да Да
Поддержка CI/CD Да Да Да Да Да

Рекомендации по выбору

Для открытых проектов

Решение: Cppcheck + Semgrep

  • быстрый анализ (Semgrep);
  • глубокие проверки (Cppcheck);
  • бесплатно и с открытым кодом.

Для коммерческих проектов

Решение: Clang Static Analyzer + PVS-Studio + Svace

  • соответствие стандартам (Svace);
  • обнаружение сложных ошибок (Clang, PVS-Studio);
  • поддержка промышленных стандартов.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.