Pull to refresh

Comments 22

Здесь был комментарий про изменения в функции create_unlink_tmp(). Человек спросил: "а что собственно изменилось?". К сожалению, я промахнулся мышкой и нажал "отклонить комментарий read-only пользователя". Прошу прощения. Ответ:
Изменения в том, что теперь проверка на NULL выполняется ДО использования указателя dir. Т.е. проверку перенеси выше.
Хотел спросить «а как же оно работало?», но вовремя вспомнил — хреново оно работало.
Недавно обнаружил у себя промах — сверяя расширение файла приводил его к верхнему регистру, а сверял со строкой в нижнем.
Это, правда, Delphi (if AnsiUpperCase(ExtractFileExt(FileName)) = '.wav'). Но с месяц назад пробовал имеющиеся под Delphi статические анализаторы — никто из них не ткнул меня в это носом.
Стало интересно — а Вы такое ловите? Т.е. смысл: отловить, что сравниваемая переменная, была преобразована прямо сейчас или строкой выше в определенный регистр — значит в правой части должны быть только символы этого регистра.
Нет, такой диагностики нет. Но идея интересная. Пометил себе. Со временем возможно реализуем. Спасибо.
При чтении статьи сложилось впечатление, что pvs-studio самостоятельно генерирует patch-файлы ))
Пока мы побаиваемся идти в сторону автоматического исправления ошибок. Человек-то иногда исправляет хуже, чем было… "Торопыжка был голодный, проглотил утюг холодный" и "Поспешишь — людей насмешишь" даже в статическом анализе актуально. Иногда после наших статей о проверке проектов кто-то сторонний начинает спешно править найденные ошибки в чужом проекте. И делает хуже, так как правит неправильно.
А где взять бинарник pvs для запуска на линукс?
На официальном сайте ничего нет.
Прошу написать нам от лица компании, и мы обсудим интересующие Вас вопросы.
UFO just landed and posted this here
У вас PR-менеджеры софт выбирают?

приду я к своему менеджеру


Ой, что-то у меня сомнения.

Так как кому нужна Linux-версия — спокойно работают с нами в почте. Критикуют, ругают, хвалят. В общем нормальный рабочий процесс. Но есть обязательно СЕКРЕТНЫЙ АНОНИМ, который будет строчить комменты, но не напишет с корпоративной почты никогда…
UFO just landed and posted this here
Не подскажете, как ведёт себя статический анализатор, заточенный (?) под C++, на чисто сишном коде? Не даёт ли ложных срабатываний?
Я недавно пытался использовать libusb-1.0 в плюсовом проекте. Когда я пытался «в лоб» обернуть струтуру libusb_transfer в класс, словил ошибку компиляции, поскольку в декларации структуры есть замечательные строчки
struct libusb_transfer {


struct libusb_iso_packet_descriptor iso_packetdesc
#if defined(STDC_VERSION) && (STDC_VERSION>= 199901L)
[] / valid C99 code /
#else
[0] / non-standard, but usually working code /
#endif
;
}
PS Извините, как ни глумился на редактором, нормальное форматирование не смог сделать, а тега [code] мне, как RO, не положено.
Не подскажете, как ведёт себя статический анализатор, заточенный (?) под C++, на чисто сишном коде? Не даёт ли ложных срабатываний?
Понятия не имею. Наверное, плохо себя ведёт.

Анализатор PVS-Studio различает язык С и С++ и учитывает их особенности при анализе.
Было бы круто, если бы c помощью pvs-studio нашли причину http://badlock.org/ до публикации патча. Правда, это может быть какая-нибудь ошибка в логике, которую никак не поймаешь анализатором.
А какая версия Samba проверялась? Внесли ли исправления найденных ошибок в проект, если да, с какой версии?

handle_main_input(regedit, key);
update_panels();
doupdate();
— } while (key != 'q' || key == 'Q');
+ } while (key != 'q' && key != 'Q');

В данном коде необходимо выйти из цикла, если встретится буква 'q' в любом регистре.

Мне кажется, сложновато будет одновременно нажать 'q' и 'Q', а правильно будет, все же, так:
} while (key != 'q' || key != 'Q');
Там отрицание. Ваше всегда будет true.
while (key != 'q' || key != 'Q');
Нет, так не выйти, т.к. логическое выражение key != 'q' || key != 'Q' будет истинно всегда, т.к. в любом случае один из операндов || будет возвращать true. В предлагаемом же варианте key != 'q' && key != 'Q' при нажатии 'q' или 'Q' один из операнодв && примет значение false и в целом выражение тоже вернет false.
Да, теперь сообразил)) Спасибо!
Sign up to leave a comment.