Комментарии 48
Не боитесь, что проверяемый «проглотит» свои же эти ошибки и далее не даст их совершать?
Т.е. разработчики учтут и внесут дополнительные проверки.
Т.е. разработчики учтут и внесут дополнительные проверки.
А чего им боятся то? Всех не перевешают! Проверку всех ошибок, находимые PVS-Studio в ближайшее время вряд ли кто то сможет перенести что в Clang что в GCC. Так что им хватит еще на хлеб с маслом.
Даже если так, это не страшно. Мы ведь тоже не стоим на месте. Собственно, наша задача всегда бежать впереди компиляторов.
НЛО прилетело и опубликовало эту надпись здесь
Частенько читаю ваши статьи на хабре и порой выношу для себя полезные вещи (спасибо!), но не могу припомнить ответа на вопрос: «Сообщаете ли Вы мэнтейнерам продуктов о найденных ошибках?»
Толсто. Но на всякий случай, если не троллинг: да (см. ответы на часто задаваемые вопросы, ссылка в конце статьи).
Мне кажется, что стоит упоминать об этом не в FAQ на стороннем сайте, а прямо в статье. Статья ведь должна в идеале быть самодостаточной, а одна строчка «мы сообщаем о багах авторам софта» сильно её не увеличит. Это для вас ваши статьи относятся к некой серии, а читатель может начать с любой из них.
Так что думаю нет, это не троллинг комментатора, а (мелкая?) недоработка автора статьи. Данный комментатор мог часто читать ваши статьи, но не ходить в FAQ — и это, имхо, нормально.
Так что думаю нет, это не троллинг комментатора, а (мелкая?) недоработка автора статьи. Данный комментатор мог часто читать ваши статьи, но не ходить в FAQ — и это, имхо, нормально.
Если в каждую статью вставлять про «отписали разработчикам», про «версию для линукс», про «проверяете ли PVS-Studio», то статьи будут похожи на юридический текст. Что главное нисколько не помешает первым вопросом написать: «А вы проверяете PVS-Studio своим анализатором?».
Вы не правы: всё писать не нужно. Проверка PVS-Studio самой собой не относится к теме стати, и версия для линукса тоже слабо… А вот то, что об этих конкретных ошибках, о которых написано в статье было сообщено разработчиком — является неотъемлемой частью повествования.
Это как снимать фильм про какого-нибудь супер-героя, но концовку не делать, потому что ведь и без того понятно, что герой всегда побеждает.
Это как снимать фильм про какого-нибудь супер-героя, но концовку не делать, потому что ведь и без того понятно, что герой всегда побеждает.
В конкретно данном случае сложность с этим:
А вообще, уже традицией стало задавать вопрос про то, сообщили ли разработчикам. Эпиком стал этот комментарий.
Но в последнее время этот вопрос перестали задавать, народ расслабился и уже в комментариях к этой статье вылезло сразу несколько F.A.Q.-овых вопросов.
К сожалению, я не могу выдать разработчикам компилятора полный отчёт.
А вообще, уже традицией стало задавать вопрос про то, сообщили ли разработчикам. Эпиком стал этот комментарий.
Но в последнее время этот вопрос перестали задавать, народ расслабился и уже в комментариях к этой статье вылезло сразу несколько F.A.Q.-овых вопросов.
является неотъемлемой частью повествования
Для Вас — это. Для других — другое является такой же частью.
Именно этот текст вставлять не обязательно.
Все же было бы приятно видедь ссылку в конце поста на соответствующий репорт (хотя бы по тому, что уже нашлось среди «мусора»), согласитесь? По крайней мере для меня, статья выглядела бы полностью законченной в плане текущей истории.
Все же было бы приятно видедь ссылку в конце поста на соответствующий репорт (хотя бы по тому, что уже нашлось среди «мусора»), согласитесь? По крайней мере для меня, статья выглядела бы полностью законченной в плане текущей истории.
Не могу понять, в чем увидели троллинг с моей стороны, когда действительно было интересно это узнать.
P.S. Да, виноват, под кат не заглянул.
P.S. Да, виноват, под кат не заглянул.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77421
Интересно, может ли вот этот код привести к проблемам:
strncmp (xloc.file, "\1", 2)
Из-за того, что строка, с которой сравнивают, имеет длину 1, а длина указана как 2.
Таки длина 2. К строкам, полученным из литералов автоматически добавляется нулевой байт.
Функция strncmp() сравнивает в лексикографическом порядке не более count символов из двух строк, заканчивающихся символом конца строки, и возвращает целое значение, зависящее от результата сравнения следующим образом. Если в какой-нибудь из заданных строк меньше count символов, сравнение заканчивается при обнаружении первого нулевого символа.
Я не вижу в стандарте ничего про «лексикографический порядок». Даже, наоборот:
The sign of a nonzero value returned by the comparison functions memcmp, strcmp, and strncmp is determined by the sign of the difference between the values of the first pair of characters (both interpreted as unsigned char) that differ in the objects being compared.
(C99, 7.21.4) — просто сравниваются байты. Для «лексикографического порядка» есть strcoll
, правда, не знаю, насколько хорошо оно работает (в первую очередь, насколько хорошо оно работает с UTF-8, с однобайтовыми локалями всё обычно в порядке).
А если PVS Studio проверит PVS Studio, что будет? ))
Когда уже будет «Находим ошибки в коде анализаторе PVS-Studio с помощью анализатора PVS-Studio»?
Я ждал этого момента!
Спасибо за интересную статью. Теперь знаю чего ждать от любимого компилятора.
Спасибо за интересную статью. Теперь знаю чего ждать от любимого компилятора.
А каким компилятором скомпилирован PVS-Studio for linux?
GCC
Тогда статью можно было назвать так: Проверяем GCC, скомпилированный GCC, анализатором PVC-Studio, скомпилированным GCC.
Рекурсивненько
И пишем в Ворде, собираемом Microsoft.
В этом?
Ошибки PVS-Studio, вызванные ошибками GCC, выявленными PVS-Studio, скомпилированной с помощью GCC, могут являться на самом деле не ошибками PVS-Studio, а ошибками GCC :))
Мне кажется, или в вашем примере кода лишняя скобка перед '?'?
Приоритет тернарного оператора ?: ниже, чем у оператора сравнения <=. Это значит, что мы имеем дело с условием вида:
(die_offset > 0 && (die_offset <= (loc->dw_loc_opc == DW_OP_call2)) ? 0xffff : 0xffffffff);
Было бы очень интересно узнавать, по мимо ошибок, как вызвать эти ошибки в самой программе
Например, что можно написать в программе и скомпилировать её GCC, чтобы была магия?
Например, что можно написать в программе и скомпилировать её GCC, чтобы была магия?
А теперь очередь GDB: https://habrahabr.ru/company/pvs-studio/blog/310156/
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Находим ошибки в коде компилятора GCC с помощью анализатора PVS-Studio