Выпуск cppcheck 2.11, статического анализатора кода для языков C++ и С
Вышла новая версия статического анализатора кода cppcheck 2.11, позволяющего выявлять различные классы ошибок в коде на языках Си и Си++, в том числе при использовании нестандартного синтаксиса, типичного для встраиваемых систем. Предоставляется коллекция плагинов, через которые обеспечена интеграция cppcheck с различными системами разработки, непрерывной интеграции и тестирования, а также предоставлены такие возможности как проверка соответствия кода стилю оформления кода. Для разбора кода может применяться как собственный парсер, так и внешний парсер от Clang. В состав также входит скрипт donate-cpu.py для предоставления локальных ресурсов для выполнения работы по совместной проверке кода пакетов Debian. Исходные тексты проекта распространяются под лицензией GPLv3.
Развитие cppcheck сосредоточено на выявлении проблем, связанных с неопределённым поведением и применением конструкций, опасных с точки зрения безопасности. Целью также является минимизация ложных срабатываний. Среди выявляемых проблем: указатели на несуществующие объекты, деления на ноль, целочисленные переполнения, некорректные операции битового сдвига, некорректные преобразования, проблемы при работе с памятью, некорректное использование STL, разыменование нулевых указателей, применение проверок после фактического обращения к буферу, выход за границы буферов, использование неинициализированных переменных.
Основные изменения:
- Добавлена проверка pop_back () для пустых контейнеров;
Улучшены контроли в циклах для алгоритмов библиотеки STL any_of, all_of и none_of.
- Улучшения анализатора потока управления:
- Возвращаемое значение функции теперь может быть определено даже при использовании условий;
- Переопределение размеров контейнеров возвращаемых из функции;
- Выведение возможных значений на основании их возможных символических значений;
- Улучшение после помещения значения в контейнер.
- Графический интерфейс:
- В файлах .cppcheck объявлена устаревшей и будет удалена в версии 2.14 поддержка типа платформы «Unspecified». Вместо неё необходимо использовать «unspecified';
В диалоговом окне выбора файлов проекта убрана замена относительных путей на абсолютные.
- Интерфейс командной строки:
- Добавлена новая опция »--check-level», определяющая уровень детализации проверок. По умолчанию задано значение «normal». Для расширенных проверок можно установить значение «exhaustive»;
- Для получения детальных сообщений «missingInclude» и «missingIncludeSystem» нет необходимости отдельного запуска с параметром --check-config. Теперь они выдаются при включении «missingInclude» при обычном вызове;
- Сообщения «missingInclude» и «missingIncludeSystem» выдаются при задание параметра -j со значением большим 1 для сборок отличных от Windows;
- Для сообщений «missingInclude» и «missingIncludeSystem» теперь применяется параметр »--error-exitcode»;
- Задание параметра »--enable=information» не будет включать «missingInclude» с версии 2.16, необходимо явное задание;
- Каждая из проверок constParameter и constVariable была разделены на 3 идентификатора в зависимости от того, является ли параметр или переменная указателем, ссылкой или локальной, что позволит более точно задавать подавление некоторых типов сообщений;
- Усилен контроль задаваемых значений для некоторых параметров командной строки, требующих задания целочисленных значений;
- При сканировании проекта с заданием параметра »-j1» обработка файлов разметки откладывается до тех пор, пока не будут обработаны файлы с кодом.
Источник: http://www.opennet.ru/opennews/art.shtml? num=59355
© OpenNet