Выпуск cppcheck 2.12, статического анализатора кода для языков C++ и С
Вышла новая версия статического анализатора кода 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, но такой способ не тестируется и не сопровождается.
Источник: http://www.opennet.ru/opennews/art.shtml? num=59764
© OpenNet