)))
Бестиарий программирования
Наблюдения за жизнью ошибок в коде. Андрей Карпов. ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода Канал-дублёр в MAX: https://max.ru/join/3VWTp9apkQvTMSRQ__LGiTQ5NGVBj8p_tOpwlQO6vS8
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
19 из 19Один из способов подавления ложных срабатываний PVS-Studio, это специальные комментарии в коде. К сожалению, постепенно в коде могут накапливаться неактуальные комментарии подавления. Такое происходит, если код изменился и не вызывает более подозрения у анализатора. Или анализатор стал лучше понимать задумки программистов и более не выдаёт в каких-то местах срабатываний. Поэтому мы реализовали в PVS-Studio механизм удаления неактуальных комментариев. Подробности в статье - Комментарии, которые п...
Для C++ программистов и не только. Обзор 10 уроков, посвящённый написанию своего языка программирования. Полностью материалы бесплатно представлены здесь.
Записи с ТБ Форум 2026 по теме РБПО: 1. Актуальные вопросы защиты информации. Организатор конференции ФСТЭК России. 2. Мастер-трек: Инструменты управления процессом РБПО. 3. Подходы и инструменты управления процессом РБПО.
Начал появляться код тех самых навайбкоденных проектов, который изменит мир и т.д. Ну а я начинаю потихоньку смотреть код этих проектов вообще и сквозь призму статического анализа в частности. Пока в глаза бросается, что код растянут и это мешает его восприятию. Например, человек бы так писать не стал, а воспользовался функцией sprintf. char seq[32]; int s = 0; seq[s++] = ':'; seq[s++] = ' '; seq[s++] = 'i'; seq[s++] = 'c'; seq[s++] = 'm'; seq[s++] = 'p'; seq[s++] = '_'; seq[s++] = 's'; seq[s++]...
Может зато опечаток нет? Есть. PVS-Studio: V560 A part of conditional expression is always false: btn_char == '+'. window.c 1713
Ещё пример. Функция bt_set_local_name просто перекладывает строку в буфер размером 248 байт и передаёт её в hci_send_cmd. int bt_set_local_name(const char name) { uint8_t params[248] = {0}; int len = 0; while (name[len] && len < 247) { params[len] = name[len]; len++; } return hci_send_cmd(HCI_OP_WRITE_LOCAL_NAME, params, 248); } Посмотрим, что происходит со строкой дальше: static int hci_send_cmd(uint16_t opcode, void params, uint8_t plen) { uint8_t buf[256]; buf[0] = HCI_COMMAND_PKT; struct hci...
Ещё на тему разбухшего vibe-кода. Смотрю проект Vib-OS. Потом про него статья будет. Это очень маленький проект, если убрать сторонние сущности и различные ресурсы, хранящиеся в виде массивов в коде. По делу там около 35 тысяч строк кода в 110 файлах. Так вот, на эти 110 файлов я насчитал как минимум 4 одинаковые функции копирования строк. static void str_copy(char dst, const char src, int max) { int i = 0; while (src[i] && i < max - 1) { dst[i] = src[i]; i++; } dst[i] = '\0'; } static void...
Наша команда работает еще над анализатором для JavaScript и TypeScript! 🔥 Приглашаем всех заинтересованных присоединиться к тестированию. В этой заметке все подробности 🔗 #js #ts #статья #тестирование
Механизмы в SAST-решениях для выявления дефектов из OWASP Top Ten На вебинаре вместе с Лукой Сафоновым, лидером российского отделения консорциума OWASP, разобрали OWASP Top Ten. Поговорили о том, почему так важно проверять исходный код на наличие потенциальных уязвимостей и как с этой задачей помогают справляться SAST-инструменты. А также рассмотрели механизмы, которые позволяют выявлять потенциальные уязвимости и дефекты безопасности. P.S. В процессе презентации речь зашла о Евгении Кокуйкине. ...