Дата публикации:Fri, 15 Sep 2023 16:14:28 +0300
Вышла новая версия статического анализатора кода cppcheck 2.12, позволяющего выявлять различные классы ошибок в коде на языках Си и Си++, в том числе при использовании нестандартного синтаксиса, типичного для встраиваемых систем. Предоставляется коллекция плагинов, через которые обеспечена интеграция cppcheck с различными системами разработки, непрерывной интеграции и тестирования, а также предоставлены такие возможности как проверка соответствия кода стилю оформления кода. Для разбора кода может применяться как собственный парсер, так и внешний парсер
от Clang. В состав также входит скрипт donate-cpu.py для предоставления локальных ресурсов для выполнения работы по совместной проверке кода пакетов Debian. Исходные тексты проекта распространяются
под лицензией GPLv3.
Развитие cppcheck сосредоточено на выявлении проблем, связанных с неопределённым поведением и применением конструкций, опасных с точки зрения безопасности. Целью также является минимизация ложных срабатываний. Среди
выявляемых проблем: указатели на несуществующие объекты, деления на ноль, целочисленные переполнения, некорректные операции битового сдвига, некорректные преобразования, проблемы
при работе с памятью, некорректное использование STL, разыменование нулевых указателей, применение проверок после фактического обращения к буферу, выход за границы буферов, использование неинициализированных переменных.
Основные изменения:
- Добавлена проверка "uselessOverride" обнаруживающая бесполезные переопределения функций, которые дублируют код или вызывают реализацию базового класса;
Добавлена проверка "knownPointerToBool" - преобразование указателя в переменную булевского типа, результатом которой всегда является истинное или ложное значение.
Улучшенные проверки:
В проверки "truncLongCastAssignment" и "truncLongCastReturn" добавлен контроль дополнительных типов, включая float и double;
Проверка "duplInheritedMember" теперь дополнительно сообщает о дубликатных функциях-членах;
Проверки "constParameter*"/"constVariable*" обнаруживают больше случаев, когда указатели/ссылки могут иметь модификатор const, например при вызове библиотечных функций.
- В статистике формируются сведения о том, какие проверки были включены в последнем анализе;
Реализовано выделение критических ошибок, из-за которых могли быть пропущены проверки.
- Добавлена выдача количества проверок, сработавших с запуска;
Добавлен параметр командной строки '--checkers-report' который управляет формированием в файле протокола сведений о том, какие проверки сработали, а какие были отключены.
- Система сборки qmake объявлена устаревшей и будет удалена в будущей версии;
Параметр командной строки '--template ' объявлен устаревшим и будет удалён в версии 2.13, используйте '--template=';
Параметр командной строки '--template-location ' объявлен устаревшим и будет удалён в версии 2.13, используйте '--template-location=';
- Параметр сборки "USE_QT6=On" больше автоматически не переключается на Qt5, если Qt6 не найдена;
Если аварийное завершение дополнения сопровождалось кодом завершения, то теперь будет приводить к "internalError", а не будет проигнорировано;
Конфигурация "Win32" была удалена из проектов и решений Visual Studio. Cборку исполняемых файлов для 32-х битной архитектуры по-прежнему можно выполнить при помощи CMake, но такой способ не тестируется и не сопровождается.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=59764