Выпуск cppcheck 2.7, статического анализатора кода для языков C++ и С
Вышла новая версия статического анализатора кода cppcheck 2.7, позволяющего выявлять различные классы ошибок в коде на языках Си и Си++, в том числе при использовании нестандартного синтаксиса, типичного для встраиваемых систем. Предоставляется коллекция плагинов, через которые обеспечена интеграция cppcheck с различными системами разработки, непрерывной интеграции и тестирования, а также предоставлены такие возможности как проверка соответствия кода стилю оформления кода. Для разбора кода может применяться как собственный парсер, так и внешний парсер от Clang. В состав также входит скрипт donate-cpu.py для предоставления локальных ресурсов для выполнения работы по совместной проверке кода пакетов Debian. Исходные тексты проекта распространяются под лицензией GPLv3.
Развитие cppcheck сосредоточено на выявлении проблем, связанных с неопределённым поведением и применением конструкций, опасных с точки зрения безопасности. Целью также является минимизация ложных срабатываний. Среди выявляемых проблем: указатели на несуществующие объекты, деления на ноль, целочисленные переполнения, некорректные операции битового сдвига, некорректные преобразования, проблемы при работе с памятью, некорректное использование STL, разыменование нулевых указателей, применение проверок после фактического обращения к буферу, выход за границы буферов, использование неинициализированных переменных.
Параллельно шведской фирмой Cppcheck Solutions AB разрабатывается расширенная версия Cppcheck Premium, обеспечивающая анализ наличия бесконечных циклов, улучшенный поиск неинициализированных переменных и расширенный анализ переполнения буферов.
В новой версии:
- Добавлена поддержка представлений (view) контейнеров — в тег библиотеки добавлен атрибут view, указывающий, что класс является представлением. Код анализа времени жизни обновлён для использования данного атрибута при поиске «висячих» контейнеров;
- Улучшены проверки;
- Исправлены накопившиеся ошибки и устранены недоработки анализатора.
Источник: http://www.opennet.ru/opennews/art.shtml? num=56661
© OpenNet