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