habrahabr

Давай поиграем в игру

  • пятница, 19 сентября 2014 г. в 03:11:02
http://habrahabr.ru/company/pvs-studio/blog/237219/

PVS-Studio. Давай поиграем в игру.
Авторы анализатора PVS-Studio предлагают вам проверить свою внимательность.

Анализаторы кода работают без устали и умеют находить множество ошибок, которые сложно заметить. Мы отобрали некоторые фрагменты кода, в которых мы выявили ошибки с помощью PVS-Studio. Все фрагменты взяты из известных Open-Source проектов.

Предлагаем вам посоревноваться с анализаторами в прозорливости и попробовать самостоятельно найти ошибки. Вам будет предложено 15 случайно выбранных заданий. За верный ответ насчитывается одно очко, если он дан в течение 1 минуты. Фрагменты кода короткие, и 1 минута это честное ограничение.


Рассмотрим пару примеров с ошибками и объясним, как указывать правильный ответ.

Пример первый. Перед вами следующий код:

Пример 1

Здесь ошибка выделена красным. При решении задач этого, конечно, не будет.

Программист случайно опечатался и вместо индекса 2 написал 3. При движении курсора мышки над кодом будут подсвечиваться различные слова и цифры. Вы должны навести курсор на число 3 и нажать левую кнопку мыши.

Это будет правильный ответ.

Второй пример. Не всегда можно однозначно указать, где ошибка:

Пример 2

Размер буфера нужно сравнить с числом 48. Случайно в код затесался лишний оператор sizeof(). В результате, размер буфера сравнивается с размером типа int.

На мой взгляд, ошибкой является оператор «sizeof», и именно на него надо указать мышкой. Однако, не имея перед глазами весь текст программы, можно рассудить так. Оператор 'sizeof' должен был посчитать размер какого-то буфера, но ему случайно подсунули макрос. Ошибкой является использование «SSL3_MASTER_SECRET_LENGTH».

Для таких случаев ответ будет засчитан, как верный, независимо от того, выберете вы «sizeof» или «SSL3_MASTER_SECRET_LENGTH».

А теперь желаем вам удачи. Начать игру.

P.S. Мы понимаем, что задания не идеальны, не всегда очевидно, куда нужно «ткнуть мышкой», и систему при желании можно обмануть. Просто учтите, что этот раздел сайта создан для развлечения, а не для полноценного тестирования кого-то.