Бестиарий программирования
Ir al canal en Telegram
Наблюдения за жизнью ошибок в коде. Андрей Карпов. ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода Канал-дублёр в MAX: https://max.ru/join/3VWTp9apkQvTMSRQ__LGiTQ5NGVBj8p_tOpwlQO6vS8
Mostrar más1 136
Suscriptores
Sin datos24 horas
-17 días
+330 días
Archivo de publicaciones
+1
Наблюдение натуралиста за миром вайб-кодинга
Я экспериментирую с агентской разработкой, чтобы понимать какие новые проблемы она несёт. ИИ не делает ошибки и опечатки в стиле человека, но кажется быстро ведёт проект в сторону запутанности/монолита. Я прочувствовал этот момент на недавнем случае.
Есть проект, что-то типа анализатора кода. При его написании используется стандарт кодирования, адаптированный под ИИ.
Работаем над поиском определённого негативного паттерна в коде. Я объясняю ИИ, что определённый вариант кода вполне уместен – так пишут, в общем всё хорошо, давай исключение сделаем. ИИ: да, понял, код хороший, переделываем. И поправил разное.
Смотрю diff, а там, помимо прочего, изменённый файл стандарта кодирования! Что? Заглядываю – там вписано, что вот этот странный паттерн кода считается теперь одним из образцов для подражания. Facepalm.
Для меня, задача которую мы делали и правка стандарта кодирования – сущности из разных галактик. Я даже представить не мог, что вот так задеть может. А с точк
Продолжение
Для меня, задача которую мы делали и правка стандарта кодирования – сущности из разных галактик. Я даже представить не мог, что вот так задеть может. А с точки зрения ИИ – никаких проблем, всё едино – там код, тут код. Там этот код ok, значит и тут ok.
Хорошо, что я просто не нажал ok, на вроде простой задаче и не заложил файлы.
Кажется я понял, как будут происходить крушения программных проектов, где ИИ фигачит код без особого контроля. Это напоминает серию Симпсонов, где на атомной станции произошла авария из-за упавшей игрушки, которая нажимала Yes. Только здесь наоборот, аварии будут там, где как раз Yes нажимается твёрдо, чётко, регулярно. А ведь это так соблазнительно, ведь вроде работает. В общем интересно, продолжаю наблюдения.
+1
Наблюдение натуралиста за миром вайб-кодинга
Я экспериментирую с агентской разработкой, чтобы понимать какие новые проблемы она несёт. ИИ не делает ошибки и опечатки в стиле человека, но кажется быстро ведёт проект в сторону запутанности/монолита. Я прочувствовал этот момент на недавнем случае.
Есть проект, что-то типа анализатора кода. При его написании используется стандарт кодирования, адаптированный под ИИ.
Работаем над поиском определённого негативного паттерна в коде. Я объясняю ИИ, что определённый вариант кода вполне уместен – так пишут, в общем всё хорошо, давай исключение сделаем. ИИ: да, понял, код хороший, переделываем. И поправил разное.
Смотрю diff, а там, помимо прочего, изменённый файл стандарта кодирования! Что? Заглядываю – там вписано, что вот этот странный паттерн кода считается теперь одним из образцов для подражания. Facepalm.
Для меня, задача которую мы делали и правка стандарта кодирования – сущности из разных галактик. Я даже представить не мог, что вот так задеть может. А с точк
Всем привет, давно не писал, завайбкодился... А вы думаете я не вайбкодю? Ещё как, надо ведь понимать, как это и куда ведёт, чтобы развивать/создавать инструменты контроля всего этого :) Но про наблюдения будет следующий пост, а сейчас хочу поделиться 2 ссылками.
1) У нас появился совместный бандл с СВД ВС. По ссылке можно узнать стоимость бандла и посмотреть запись вебинара «Применение ЗОСРВ „Нейтрино“ и PVS-Studio для разработки ПО согласно требованиям МЭК 61508».
2) PVS-Studio включили в АТЛАС МедТех 2026. Смотри раздел VII - класс 17 - Решения и компетенции по информационной безопасности и инфраструктуре, применяемые в ИСЗ.
Обзор нововведений в C# 15. Union-типы, закрытые иерархии, именованные break и continue, индексаторы расширений, аргументы выражения коллекции, безопасность памяти.
Вышел новый пресс-релиз про PVS-Studio — 8.01. В нём: расширение поддержки OWASP, поддержка новых версий Java и Go и многое другое.
Коллеги для удобства фильтрации сделали из статьи интерактивный раздел – Инструменты РБПО
Напоминаю, что мы подготовили подборку материалов и вебинаров по теме процессов разработки безопасного ПО (РБПО) по ГОСТ Р 56939-2024.
ГОСТ56939.РФ
Запись вебинара: Go vet не поможет... Как сделать свой анализатор кода для Go?
В целях нетворкинга и просто так приглашаю коннектиться в TenChat — что-то типа LinkedIn. Ссылка на мой профиль: https://m.tenchat.ru/u/uIMxo8j8
Сегодня коллега демонстрирует, как визуально проявляют себя баги в Java коде: Нашёл ошибки в моде Create и проверил их в игре
> В этой статье мы разберём ошибки в одном из самых популярных модов для Minecraft — Create. Посмотрим, как они проявляются прямо в игре, и отправим пулл-реквесты с исправлениями.
На днях выступал с докладом на форуме "Безопасность транспортных средств", организованном компанией "Экварта". Записи докладов пока нет, поэтому пока выкладываю свою презентацию: Анализатор PVS-Studio как средство достижения целей верификации ГОСТ Р ИСО 26262-6.
Кажется, я ментально синхронизировался с миром РБПО. Сегодня на РБПО.рф опубликовали карту инструментов РБПО. Дело в том, что несколько предыдущих дней мы занимались приблизительно тем же самым.
Так что теперь две подборки :)
Наш вариант — Список инструментов для РБПО.
Кажется, я ментально синхронизировался с миром РБПО. Сегодня на РБПО.рф опубликовали карту инструментов РБПО. Дело в том, что несколько предыдущих дней мы занимались приблизительно тем же самым. Так что теперь две подборки :)
Наш вариант — Список инструментов для РБПО.
+2
"Лаборатория Касперского" разрабатывает микроядерную операционную систему KasperskyOS в соответствии с принципом Secure by Design (конструктивная безопасность). Этот принцип предполагает, что защищённость системы закладывается на уровне её архитектуры. К качеству и надёжности операционной системы предъявляются высокие требования, а доверенные компоненты проходят тщательную проверку, одним из этапов которой является статический анализ кода.
"Лаборатория Касперского" использует PVS-Studio в разработке операционной системы KasperskyOS с 2016 года. За это время некоторые обращения разработчиков в нашу поддержку превратились в новые функции анализатора, доступные теперь всем пользователям PVS-Studio. Разбираем пять таких случаев и показываем, как обратная связь корпоративного клиента влияет на развитие продукта.
Пример, как идеология педантичности стандарта MISRA C защищает от ошибок
В C литерал
0 можно присваивать как численным типам, так и указателю (вместо NULL). Правило MISRA C 2012/2023 11.9, которое говорит, что нужно использовать именно NULL, может казаться избыточным. Например, здесь:
typedef struct FT_Outline_
{
short n_contours; /* number of contours in glyph */
short n_points; /* number of points in the glyph */
FT_Vector* points; /* the outline's points */
char* tags; /* the points flags */
short* contours; /* the contour end points */
int flags; /* outline masks */
} FT_Outline;
....
static const FT_Outline null_outline = { 0, 0, 0, 0, 0, 0 };
V2648 Use NULL macro instead of literal zero for pointers.
Если заменить некоторые 0 на NULL никому лучше не станет.
static const FT_Outline null_outline = { 0, 0, NULL, NULL, NULL, 0 };
Правило, кажется, просто украшательством стиля написания кода. Лишнее ограничение при написании кода... Какой практический прок? Давайте посмотрим, как такое предупреждение помогает выявить реальную ошибку.
typedef char FAR * FAR * png_charpp;
....
png_size_t
png_check_keyword(...., png_charpp new_key)
{
....
if (key_len > 79)
{
png_warning(....);
new_key[79] = '\0'; // <= V2648
key_len = 79;
}
....
}
Обратите внимание на тип переменной new_key – это указатель на указатель. Из-за опечатки, терминальный ноль обнуляет указатель, а не записывается в строку. Правильный вариант кода:
(*new_key)[79] = '\0';
Благодаря осмотрительной педантичности найдена реальная ошибка.
На самом деле, PVS-Studio и раньше эту ошибку находил с помощью другой диагностики – V527 It is odd that the '\0' value is assigned to 'char' type pointer. Но здесь именно хотелось продемонстрировать, как работают и помогают MISRA правила. Вообще ситуация, что один и тот-же баг выявляется разными детекторами, вполне частая ситуация и удивляться этому не стоит.
Почему я про MISRA вспомнил?
Во-первых, мои коллеги сейчас занимаются подготовкой квалификационного пакета PVS-Studio согласно ГОСТ Р МЭК 61508 и ГОСТ Р ИСО 26262 по поддержке MISRA C:2012 и MISRA C:2023.
Во-вторых, 23 сентября я буду с докладом "Анализатор PVS-Studio как средство достижения целей верификации ГОСТ Р ИСО 26262-6" на форуме "Безопасность транспортных средств". Приглашаю посетить мероприятие и мой доклад.+1
Сегодня у меня для любителей C++: Каждая идиома когда-то была проблемой.
Красивый и надёжный код почти никогда не рождается с первого раза. Сначала появляются ошибки, а уже потом – идиомы, которые помогают их избегать. На вебинаре рассмотрели реальные фрагменты кода из открытых проектов на языке C++, нашли в них проблемные места с помощью статического анализа, и разобрали более 10 идиом и паттернов, которые позволят защитить ваш код.А для Java-разработчиков: 96-й подкаст Javaswag: Gradle, плагины для Minecraft и статический анализ в PVS-Studio.
Обсудили, как войти в Java через моды и серверы Minecraft, почему мир кубов живет на Netty и Gradle, как грамотно организовать мультимодульные проекты с помощью build-logic и type-safe accessor'ов, а также заглянули под капот разработки статических анализаторов кода (от поиска багов и Taint-анализа до соответствия ГОСТам).
