Как стать автором
Обновить

Комментарии 4

Если отладка это устранение ошибок, то программирование это их создание...

А как анализатор узнаёт что возвращаемое значение является "важным"? В нем прописаны такие функции для стандартной библиотеки?

В таком случае в случае использования нестандартной пользовательской функции clamp предупреждения бы не было?

Да, в анализаторе вручную прописаны тысячи аннотаций для функций из стандартной библиотеки, WinAPI и таких распространённых библиотек как Qt, Unreal Engine (про это даже статья отдельная была), Zlib и так далее. Разметка достаточно разносторонняя и касается не только возвращаемых значений, но и аргументов и их взаимосвязи. Это позволяет находить разнообразные аномальное использование функций.

Более того, если функция не проаннотирована, то анализатор сам пытается вывести на основе её тела некоторые критерии и затем использовать их в точках вызова функции. Другими словами, он пытается самостоятельно проаннотировать функции. К сожалению, получается это обычно только для относительно простых функций. Плюс тело функции должно быть доступно анализатору. Хорошо, если она в той-же единице компиляции. А если в другой, тот ту всё ещё сложнее и в игру вступает межмодульный анализ.

Дополнительно см. статью "Технологии статического анализа кода PVS-Studio".

А ведь будь на clamp повешен nodiscard и проблемы бы скорее всего не было

Зарегистрируйтесь на Хабре, чтобы оставить комментарий