Инструменты статического анализа кода


Инструменты статического анализа предназначены для выявления дефектов в исходном коде программ. Само название говорит, что принцип их работы основан на статическом анализе кода.

Существует огромное количество инструментов статического анализа, созданных для различных языков программирования. С большим списком таких инструментов можно познакомиться на сайте Wikipedia: List of tools for static code analysis.

Наша компания разрабатывает анализатор кода PVS-Studio, предназначенный для анализа кода на языке Си/Си++. Поэтому ниже будут рассмотрены некоторые наиболее популярные анализаторы, которые анализируют код на языке Си/Си++ и являются нашими конкурентами.

  • Coverity. Считается одним из лучших на рынке статических анализаторов кода. Стоит дорого и сообщает цены только в индивидуальном порядке. Поддерживает программу по бесплатной проверке открытых приложений. Ссылки: сайт, страница на сайте Wikipedia.
  • Cppcheck. Очень популярный бесплатный открытый проект. Заявляет о стремлении к 100% отсутствию ложных срабатываний. Однако построен на идее анализа с помощью регулярных выражений. И, как результат, это во многом мешает достижению поставленных целей. Также из-за этого не может выполнить многие диагностики (см. статью "Статический анализ и регулярные выражения"). Если ситуация изменилась, прошу меня поправить. Ссылки: сайт, страница на сайте Wikipedia, сравнение с PVS-Studio, описание в разделе терминологии.
  • Clang. Компилятор языка С/С++/Objective-C с встроенным мощным статическим анализатором кода. Впрочем, во многих других компиляторах также есть хорошие встроенные анализаторы кода. Например, Visual Studio 2012 включает в себя поддержку статического анализа проектов Visual C++ (флаг компилятора /analyze). Популярность Clang вызвана открытостью его кода и возможностью написания собственных расширений. Ссылки: сайт, страница на сайте Wikipedia, о проверки кода Clang с помощью PVS-Studio.
  • Frama-C. Анализатор программ на языки Си. Ссылки: сайт, страница на сайте Wikipedia.
  • Goanna. Анализатор программ на языки Си/Си++. Ссылки: сайт, страница на сайте Wikipedia.
  • Klocwork Insight. Один из лидеров рынка статических анализаторов кода. Как в случае с Coverity и другими инструментами, мы не можем провести сравнение с этим инструментом. Компании отказываются от предоставления пробных лицензий. Ссылки: сайт, страница на сайте Wikipedia.
  • Lint. Упоминается здесь, так как носит историческую ценность. Этот инструмент можно назвать первым статическим анализатором кода для языка Си. Названия многих современных анализаторов образуются от слова "lint" (cpplint, PC-Lint, Splint, JSLint, Rpmlint, Puppet Lint, Pylint). Подробнее об инструменте можно узнать из статьи на Wikipedia.
  • Parasoft C/C++test. Широко известный и популярный анализатор кода. Ссылки: сайт, страница на сайте Wikipedia.
  • PC-Lint. Весьма гибкий инструмент статического анализа. За гибкость анализа приходится платить большим количеством настроек в конфигурационных файлах. Ссылки: сайт, страница на сайте Wikipedia.
  • PVS-Studio. Разрабатываемый нашей компанией анализатор кода. Ссылки: страница продукта, примеры обнаруживаемых ошибок.

Найденные ошибки

Проверено проектов
344
Собрано ошибок
12 970

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

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

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

goto PVS-Studio;