Излезе нова версия на статичния анализатор на код cppcheck 2.7, който позволява откриването на различни класове грешки в кода на езиците C и C++, включително при използване на нестандартен синтаксис, типичен за вградени системи. Предоставя се колекция от плъгини, чрез които се осигурява интеграция на cppcheck с различни системи за разработка, непрекъсната интеграция и тестване, както и възможности за проверка на съответствието на кода със стила на оформяне. За анализ на кода може да се използва както собствен парсер, така и външен парсер от Clang. Включва се и скрипт donate-cpu.py за предоставяне на локални ресурси за изпълнение на работа по съвместно проверяване на кода на пакети Debian. Изходните кодове на проекта се разпространяват под лицензия GPLv3.
Развитието на cppcheck е фокусирано върху откритията на проблеми, свързани с неопределено поведение и използване на конструкции, опасни от гледна точка на сигурността. Целта е също така минимизиране на фалшивите сработвания. Между откритите проблеми са: указатели към не съществуващи обекти, деления на нула, препълване на цели числа, некоректни операции на битово преместене, некоректни преобразувания, проблеми при работа с паметта, некоректно използване на STL, разименуване на нулеви указатели, прилагане на проверки след действително обръщение към буфера, излизане извън границите на буферите, използване на неинициализирани променливи.
Паралелно шведската компания Cppcheck Solutions AB разработва разширена версия Cppcheck Premium, която осигурява анализ на наличието на безкрайни цикли, подобрено откриване на неинициализирани променливи и разширен анализ на препълване на буферите.
В новата версия:
- Добавена е поддръжка на представления (view) на контейнери — в тега на библиотеката е добавен атрибут view, указващ, че класът е представление. Кодът за анализ на времето на живот е актуализиран, за да използва този атрибут при търсенето на "висящи" контейнери;
- Подобрени са проверките;
- Поправени са натрупаните грешки и отстранени недостатъците на анализатора.
Източник: opennet.ru
