Вышла новая версия 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.
>>> Подробности
