assert_hint

Созерцая предупреждение PVS-Studio для код вида:

HRESULT hr=S_OK;

try
{
 //.... много страшного кода, которые может кидать исключения, но таки не трогает hr.

 assert(hr==S_OK); //PVS-Studio warning: V547 Expression 'hr == ((HRESULT) 0L)' is always true.
}
catch //....

… задумался.

У меня таких декларативных отладочных проверок — даже не вагон и маленькая тележка. Тут их эшелон(ы).

И наверное уже пора добавить в свою в инструментальную библиотеку макрос assert_hint.

4 комментария

Andrey Karpov  on Декабрь 23rd, 2018

Как вариант, можно просто отключить V547 для assert:

//-V:assert:547

Этот комментарий нужно поместить в один из глобальных заголовочных файлов или в .pvsconfig (см. «Подавление ложных предупреждений с помощью файлов конфигурации диагностик (.pvsconfig)» в разделе по подавлению ложных срабатываний https://www.viva64.com/ru/m/0017/ ).

Dmitry Kovalenko  on Декабрь 23rd, 2018

Ой, какие люди сюда заглянули 🙂

Спасибо за подсказку.

Dmitry Kovalenko  on Декабрь 23rd, 2018

Походу это я уже просто начал тупеть.

Если анализатор ругается на assert-ы, то надо переключиться на Release-конфигурацию 🙂

Dmitry Kovalenko  on Декабрь 23rd, 2018

Проверил на другом предупреждении — 779 (недостижимая точка). Работает 🙂

//-V:assert_hint:779
#define assert_hint(cond) assert(cond);

Раньше пытался 4-ый уровень предупреждений компилятора ублажать, теперь PVS-Studio :))

Leave a Comment