PVS-Studio на них есть :) Мимо такой игры мы пройти не смогли.
Если вам интересно посмотреть, какие ошибки мы там нашли, предлагаю почитать статью: VVVVVV??? VVVVVV!!!
Если не секрет — с чем связана ваша заинтересованность в старых изданиях MISRA C? Ведь более современные версии стандарта содержат как новые правила, так и переосмысленные и доработанные старые. Ситуация здесь примерно такая же, как у разных изданий технической литературы — читать стоит самое последнее, ведь так?
P. S. Мы сейчас усиленно занимаемся поддержкой MISRA C:2012 и MISRA C++:2008.
На момент написания комментария в PVS-Studio есть 50 готовых MISRA-диагностик и еще около 20 на подходе (одна диагностика анализатора — это обычно несколько правил MISRA). И хотя наш анализатор уже можно использовать для проверки соответствия стандарту MISRA, мы продолжаем стремиться к полному покрытию всех правил. Поэтому ваше ожидание не проходит зря :)
PVS-Studio умеет встраиваться в различные IDE. Например, в виде плагина для Visual Studio или IntelliJ IDEA. Поэтому искать ошибки и просматривать отчет можно не выходя из IDE. Поэтому перейти к определению символа можно без всяких проблем.
Файл вполне может содержать терминальные нули. Например, это может использоваться, чтобы удобно разбить содержимое буфера на строки.
Да, содержимое файла может быть длиннее буфера. Именно поэтому вторым параметром функция fgets принимает число, ограничивающее количество считываемых символов.
Если ты ничего не введешь и нажмешь Enter, то fgets считает символ переноса строки и вернет указатель на "\n\0".
Но в примере, который демонстрируется на видео, вводится не пустая строка, а строка, которая начинается с символа '\0'. Можно подробнее почитать об этом по ссылке на оригинальную статью.
Я заметил, что ошибки, связанные с именами вида 'var1', 'var2', встречаются практически в каждом проверенном проекте. Создается впечатление: «Назвал переменные очень похоже — жди беды». Неужели ошибки такого рода превратились в пандемию? Самое обидное, что их и правда бывает сложно обнаружить с помощью Code Review. Конечно, их можно избежать, просто давая сущностям более различимые имена, но соблазн бывает велик)
Если вам интересно посмотреть, какие ошибки мы там нашли, предлагаю почитать статью:
VVVVVV??? VVVVVV!!!
Вот руководство по запуску анализа на Travis CI:
habr.com/ru/company/pvs-studio/blog/458072
А вот пример:
habr.com/ru/company/pvs-studio/blog/464645
P. S. Мы сейчас усиленно занимаемся поддержкой MISRA C:2012 и MISRA C++:2008.
На момент написания комментария в PVS-Studio есть 50 готовых MISRA-диагностик и еще около 20 на подходе (одна диагностика анализатора — это обычно несколько правил MISRA). И хотя наш анализатор уже можно использовать для проверки соответствия стандарту MISRA, мы продолжаем стремиться к полному покрытию всех правил. Поэтому ваше ожидание не проходит зря :)
Да, содержимое файла может быть длиннее буфера. Именно поэтому вторым параметром функция fgets принимает число, ограничивающее количество считываемых символов.
Но в примере, который демонстрируется на видео, вводится не пустая строка, а строка, которая начинается с символа '\0'. Можно подробнее почитать об этом по ссылке на оригинальную статью.