MyTetra Share
Делитесь знаниями!
Проверка кода: какие статические анализаторы существуют?
Время создания: 06.02.2009 21:57
Текстовые метки: C++, код, lint, статический анализатор, проверка
Раздел: Компьютер - Программирование - Язык C++ (Си++)
Запись: xintrea/mytetra_syncro/master/base/0000000737/text.html на raw.github.com

На 2009 год есть несколько анализаторов.


  • Для проверки кода можно использовать lint, а точнее cpplint.
  • Coverity Scan бесплатный для opensource проектов.
  • cppckeck - входит во многие дистрибутивы Linux
  • PVS-Studio - платный анализатор, бесплатен для открытых проектов (по запросу)


На 2022 год есть следующие анализаторы:


  • Semgrep — легковесный инструмент статического анализа для поиска ошибок в коде. Был разработан командой r2c, написан в большинстве своем на OCaml. Первый релиз состоялся в начале 2020 года.
  • CodeQL впервые был представлен компанией Semmle в 2018 году. Бывалые ресечеры могут помнить его как SemmleQL. Он довольно быстро был выкуплен GitHub и с 2020 года принадлежит Microsoft.
  • Weggli — инструмент семантического поиска в кодовых базах на C/C++. Разработан исследователем Felix Wilhelm из Google Project Zero и опубликован осенью 2021 года с целью помочь ресечерам находить интересные места в больших кодовых базах. "Killer feature" данного инструмента — возможность исследовать C/C++ проекты без необходимости их сборки, в чем он очень похож на Semgrep.
  • Joern — инструмент командной строки для статического анализа исходного кода и байт-кода от ShiftLeft. Реализован на языке Scala, а анализ кода выполняется с использованием языка запросов CPGQL, предметно-ориентированного языка (также основан на Scala), разработанного специально для работы с CPG (code property graph). CPG как понятие в контексте Joern является основообразующим, это описано в научной работе самих разработчиков — "Modeling and Discovering Vulnerabilities with Code Property Graphs". CPG представляет собой промежуточное представление кода, включает в себя AST проекта, Control Flow граф, информационные потоки и иные необходимые данные для дальнейшего анализа. Реализацию CPG можно найти в github-репозитории ShiftLeft.
  • MATE представляет собой целый набор инструментов статического анализа кода для C/C++ проектов. В этом обзоре данный toolset является темной лошадкой, разработан командой Galois совместно с DARPA. Релиз состоялся совсем недавно, в конце лета 2022 года, и инструментарий еще не успел обрасти многочисленными примерами использования, набором правил, воркшопами и каким-либо фидбеком. Однако потенциал MATE достаточно велик, таким широким кругом возможностей может похвастаться не каждый инструмент. Стоит отметить, что на данный момент MATE является программным обеспечением исследовательского уровня, разработчики проводят большую работу, чтобы сделать его более надежным.


Подробности использования данных анализаторов написаны в статье: Обзор open-source инструментов

поиска уязвимостей для C/C++.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования