PVS-Studio corporate blog
Open source
C++
*nix
C
Comments 16
+5
Единорожек тут выглядит так, будто ему дали пинка под зад и он летит :D
+1
На rdesktop уже все забили, и чинить его, наверное, никто не будет.
Сейчас актуален FreeRDP
0
А rrdtool не хотите проверить? Широко известная в узких кругах программа с 20 летней историей.
0
Чтобы избежать подобных ошибок результат работы функции fgetc следует хранить в переменной типа int

Здравствуй, *опа, Новый Год :) Неужели до сих пор находятся личности, которые не смогли осилить fgetc?
0
А льзя ли сделать, чтоб конструкция «break; case» не вызывала срабатывания V622?
switch ( value )
{
    break; case 1: func1();
    break; case 2: func2();
    break; case 3: func3();
}
0
Анализатор тут прав, зачем так писать? Возможно, для кого-то это даже красиво, но не более.
+1
Так писать можно не для красоты, а для того, чтоб не попадать в ситуацию «ой я опять забыл break». Или когда в кейсе был написан return, затем код изменился, но break добавить забыли. С тех пор, как я начал так писать в своих личных проектах, ни разу не возникло типичных для switch проблем.
Зато буквально пару недель назад нашёл несколько проблем во вложенных свитчах при код-ревью одного проекта на работе. В своё время наши парни не захотели писать «break; case», типа выглядит плохо, и вот результат.
0
Да я так и сделал, просто хотел уточнить насчёт данного случая. Анализатор ругается на первый break, но ведь реально там ошибки нет.
0
Почему нет? Быть может должно было быть:

switch ( value )
{
           case 0: func0();
    break; case 1: func1();
    break; case 2: func2();
    break; case 3: func3();
    break;
}
0
Это просто переформатированный обычный switch. Если перед «case 0» добавить ещё один кейс, то у нас проблемы, потому что скорее всего break никто не добавит. Есть ли хоть какая-нибудь причина не писать break перед первым case?
Я сейчас серьезно спрашиваю, интересно разобраться.
+1
Я сейчас посмотрел ещё раз что делает V622 и понимаю, что эта штука именно для диагностики случая, когда потеряли первый case. Я сначала думал, что тут про любой кейс в свитче. Насколько я понимаю, есть другие диагностические сообщения для свитча, поэтому вопрос снимается, сорри за то, что побеспокоил.
+1
а как по мне, так фактически это Dead Code, этот джамп (если он не будет удалён компилятором) недостижим… Но я бы игнорировал в случае если это break — выглядит как хорошый оверрайд.
0
> Но я бы игнорировал в случае если это break — выглядит как хорошый оверрайд.
У нас 100500 исключений, чтобы не ругаться на определённые стили. Но всё предвидеть невозможно и не всегда разумно.
0
Конечно. Просто мне кажется что этот случай вполне можно сделать 100501 :) низкроприоритетная задача для студня на стажировке типа
Only those users with full accounts are able to leave comments. , please.