Вышла новая версия cppcheck — статического анализатора исходного кода для языков C и C++.
В этом выпуске представлены новые проверки:
- пропущенный 
returnв функции; - запись перекрывающихся (overlapping) данных, обнаружение UB;
 - сравнение с значением вне допустимого диапазона типов;
 - отключение copy elision из-за использования 
return std::move(local); - открытие файла на чтение и запись в разных потоках (streams).
 
Также внесены улучшения:
- Добавлен цветной вывод диагностических сообщений на Unix-based платформах.
 - Добавлен символьный анализ для ValueFlow.
 - Правила, использующие список токенов «define», могут быть сопоставлены и с 
#include. - Библиотечный тег 
functionможет использовать тегcontainer, что позволяет задатьyieldsилиspecifyдля контейнера, принимаемого входным аргументом свободной функции (например,std::size,std::empty,std::begin,std::end, и т.д). - Библиотечный тег 
smart-pointerможет задавать тегuniqueдля умных указателей, реализующих единоличное владение. Реализовано предупреждение о провисших ссылках на такие указатели. - Исправлены проблемы при использовании флага 
--cppcheck-build-dir. - htmlreport теперь может выводить информацию об авторе (получаемую с помощью 
git blame). - Больше предупреждений о не-константных переменных, которые можно сделать константными.
 
Помимо этого, была завершена проверка соответствия исходного кода стандарту MISRA C 2012: реализованы все правила MISRA C 2012, кроме 1.1, 1.2 (должны обеспечиваться компилятором) и 17.3 (может обеспечиваться компилятором), включая правила в поправках 1 и 2.
Исходный код анализатора распространяется по лицензии GPLv3.
>>> Подробности











