Cppcheck
Оригинальный автор(ы) | Даниэль Марьямяки |
---|---|
Первоначальный выпуск | 8 мая 2007 г |
Стабильная версия | 2.14.2 [1]
/ 22 июня 2024 г |
Репозиторий | |
Написано в | С++ |
Операционная система | Кросс-платформенный |
Доступно в | Английский , голландский , финский , шведский , немецкий , русский , японский , сербский , испанский , французский , итальянский , корейский , китайский |
Тип | Статический анализ кода |
Лицензия | Стандартная общественная лицензия GNU |
Веб-сайт | cppcheck |
Cppcheck — инструмент статического анализа кода для C и C++ языков программирования . Это универсальный инструмент, позволяющий проверять нестандартный код. [2] Создатель и ведущий разработчик — Даниэль Марьямяки.
Cppcheck — бесплатное программное обеспечение под лицензией GNU General Public License .
Функции
[ редактировать ]Cppcheck поддерживает широкий спектр статических проверок, которые могут не покрываться самим компилятором. Эти проверки представляют собой проверки статического анализа, которые можно выполнять на уровне исходного кода. Программа ориентирована на статический анализ, который носит строгий, а не эвристический характер.
Некоторые из поддерживаемых проверок включают в себя:
- Автоматическая проверка переменных
- Проверка границ на предмет переполнения массива
- Проверка классов (например, неиспользуемые функции, инициализация переменных и дублирование памяти)
- Использование устаревших или замененных функций согласно Open Group. [3]
- Проверка безопасности исключений, например использование выделения памяти и проверки деструктора.
- Утечки памяти , например, из-за потери области без освобождения
- Утечки ресурсов , например, из-за того, что забыли закрыть дескриптор файла.
- Недопустимое использование стандартной библиотеки шаблонов. функций и идиом
- Устранение мертвого кода с использованием опции unusedFunction
- Различные стилистические и исполнительские ошибки.
Как и во многих программах анализа, существует множество необычных случаев идиом программирования, которые могут быть приемлемыми в конкретных целевых случаях или за пределами возможностей программиста по исправлению исходного кода. Исследование, проведенное в марте 2009 года, выявило несколько областей, в которых Cppcheck обнаружил ложные срабатывания, но не уточнило проверенную версию программы. [4] Cppcheck был идентифицирован для использования в таких системах, как CERN 4DSOFT, пакет метаанализа [5] для проверки кода в устройствах считывания детекторов частиц высокой энергии, [6] программное обеспечение для мониторинга системы радиотелескопов [7] а также при анализе ошибок крупных проектов, таких как OpenOffice.org [8] и архив Debian . [9]
Разработка
[ редактировать ]Проект активно развивается [10] и активно поддерживается в различных дистрибутивах. [11] [12] Он обнаружил действительные ошибки в ряде популярных проектов. [13] такие как ядро Linux и MPlayer . [14]
Плагины
[ редактировать ]плагины для следующих IDE или текстовых редакторов. Существуют [15]
- CLion [16]
- Код::Блоки - интегрированы.
- CodeLite - интегрированный.
- Затмение [17]
- Эмакс [18]
- гедит [19]
- Хадсон [20]
- Дженкинс [21]
- Кейт [22]
- КДевелопмент [23]
- Создатель Qt [24]
- Возвышенный текст [25]
- Визуальная Студия [26] [27] [28]
- Яска [29]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Выпуск 2.14.2» . 22 июня 2024 г. Проверено 22 июля 2024 г.
- ^ «Обзор программных инструментов C и C ++ для вычислительной науки» (PDF) . Совет научно-технического учреждения . Лаборатории Чилболтона, Дэрсбери и Резерфорда Эпплтона. Декабрь 2009. с. 14. Архивировано из оригинала (PDF) 12 марта 2012 года . Проверено 14 сентября 2010 г.
- ^ «Системные интерфейсы» . pubs.opengroup.org . Проверено 24 сентября 2020 г.
- ^ «Статический анализ кода для встраиваемых систем» (PDF) .
- ^ «План распространения и использования знаний (Результат ЕС DNA2.11» (PDF) . 2010 г. Архивировано из оригинала (PDF) 4 июня 2013 г. Проверено 15 сентября 2010 г. .
- ^ «Проектирование и реализация адаптивной, радиационно-устойчивой встраиваемой системы на примере считывающего контроллера (Ан: Разработка и внедрение адаптивной, радиационно-устойчивой встраиваемой системы для работы считывающего контроллера)» (PDF) . 2010. Архивировано из оригинала (PDF) 11 марта 2012 г.
- ^ «Концепция мониторинга системы Wettcell и первые реализации» (PDF) . Международная РСДБ-служба геодезии и астрометрии. 2010. с. 447.
- ^ «Охота на уязвимости в большом программном обеспечении: пакет OpenOffice» (PDF) . Архивировано из оригинала (PDF) 28 сентября 2012 г. Проверено 15 сентября 2010 г.
- ^ «Представляем проект «Автоматизированный анализ кода Debian» (DACA)» . LWN.net.
- ^ Cppcheck на Github
- ^ Cppcheck в системе отслеживания пакетов Debian
- ^ Порт FreeBSD
- ^ «Список ошибок, о которых сообщили пользователи, обнаруженных cppcheck» .
- ^ «Список найденных ошибок» . СоурсФордж . Архивировано из оригинала 14 октября 2013 г.
- ^ «SourceForge.net: cppcheck» . sourceforge.net . Архивировано из оригинала 18 июля 2012 г.
- ^ «Плагин cppcheck для CLion» . плагины.jetbrains.com .
- ^ "Cppcheclipse" . github.com .
- ^ «Флайчек» . github.com .
- ^ «Плагин gedit Cppcheck» . github.com . Архивировано из оригинала 17 декабря 2012 г.
- ^ «Плагин Cppcheck» . hudson-ci.org . Архивировано из оригинала 26 октября 2017 г. Проверено 15 сентября 2010 г.
- ^ «Плагин Cppcheck» . Дженкинс-ci.org . 20 мая 2022 г.
- ^ Куллманн, Кристоф (2 февраля 2013 г.). «Новости плагинов Kate Project — анализ кода» . Кейт | Получите преимущество в редактировании . Проверено 14 декабря 2016 г.
- ^ Фанк, Кевин (06 декабря 2016 г.). «Плагин Cppcheck от KDevelop, объединенный с kdevelop.git, будет выпущен в версии 5.1» . Проверено 14 декабря 2016 г.
- ^ «Галерея плагинов Qt Creator» . Qt Вики .
- ^ «Плагин Sublimelinter» . github.com .
- ^ «Надстройка Cppcheck» . Торговая площадка Visual Studio .
- ^ Фиолетовый Жираф. «Домашняя страница cppcheck-vs-addin» . Гитхаб . Проверено 3 марта 2014 г.
- ^ Шрикс. «Простой инструмент статического анализа с открытым исходным кодом для Visual Studio» . Архивировано из оригинала 10 февраля 2015 г. Проверено 27 августа 2012 г.
- ^ Сковетта, Майкл. «Яска» .