TGViewer
Channel Public Channel
Бестиарий программирования

Бестиарий программирования

@programming_tales

Наблюдения за жизнью ошибок в коде.
Андрей Карпов.

ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода

Канал-дублёр в MAX: https://max.ru/join/3VWTp9apkQvTMSRQ__LGiTQ5NGVBj8p_tOpwlQO6vS8
Subscribers
1.14K
Photos
396
Videos
5
Links
490
Recent Posts 16 shown
Post #743 194
Сегодня коллега демонстрирует, как визуально проявляют себя баги в Java коде: Нашёл ошибки в моде Create и проверил их в игре

В этой статье мы разберём ошибки в одном из самых популярных модов для Minecraft — Create. Посмотрим, как они проявляются прямо в игре, и отправим пулл-реквесты с исправлениями.
  • 🔥 3
  • 👍 1
Post #741 232
2026_09_23_Андрей_Карпов_Безопасность_транспортных_средств_PVS_Studio.pdf772.8 KB
На днях выступал с докладом на форуме "Безопасность транспортных средств", организованном компанией "Экварта". Записи докладов пока нет, поэтому пока выкладываю свою презентацию: Анализатор PVS-Studio как средство достижения целей верификации ГОСТ Р ИСО 26262-6.
  • 🔥 2
Post #739 249
Кажется, я ментально синхронизировался с миром РБПО. Сегодня на РБПО.рф опубликовали карту инструментов РБПО. Дело в том, что несколько предыдущих дней мы занимались приблизительно тем же самым.

Так что теперь две подборки :)

Наш вариант — Список инструментов для РБПО.
  • 🔥 4
  • 👍 1
Post #735 403
"Лаборатория Касперского" разрабатывает микроядерную операционную систему KasperskyOS в соответствии с принципом Secure by Design (конструктивная безопасность). Этот принцип предполагает, что защищённость системы закладывается на уровне её архитектуры. К качеству и надёжности операционной системы предъявляются высокие требования, а доверенные компоненты проходят тщательную проверку, одним из этапов которой является статический анализ кода.

"Лаборатория Касперского" использует PVS-Studio в разработке операционной системы KasperskyOS с 2016 года. За это время некоторые обращения разработчиков в нашу поддержку превратились в новые функции анализатора, доступные теперь всем пользователям PVS-Studio. Разбираем пять таких случаев и показываем, как обратная связь корпоративного клиента влияет на развитие продукта.
  • 🔥 6
Post #734 328
Пример, как идеология педантичности стандарта 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" на форуме "Безопасность транспортных средств". Приглашаю посетить мероприятие и мой доклад.
  • 👏 5
Post #733
Бестиарий программирования pinned «Всем привет. Я уже делал цикл из 5 вебинаров про ГОСТ Р 71207—2024 (Статический анализ программного обеспечения): Общее описание и актуальность, Терминология, Критические ошибки, Технологии анализа кода, Процессы.   С тех времён я переосмыслил некоторые моменты.…»
Post #730 378
Сегодня у меня для любителей C++: Каждая идиома когда-то была проблемой.
Красивый и надёжный код почти никогда не рождается с первого раза. Сначала появляются ошибки, а уже потом – идиомы, которые помогают их избегать. На вебинаре рассмотрели реальные фрагменты кода из открытых проектов на языке C++, нашли в них проблемные места с помощью статического анализа, и разобрали более 10 идиом и паттернов, которые позволят защитить ваш код.


А для Java-разработчиков: 96-й подкаст Javaswag: Gradle, плагины для Minecraft и статический анализ в PVS-Studio.
Обсудили, как войти в Java через моды и серверы Minecraft, почему мир кубов живет на Netty и Gradle, как грамотно организовать мультимодульные проекты с помощью build-logic и type-safe accessor'ов, а также заглянули под капот разработки статических анализаторов кода (от поиска багов и Taint-анализа до соответствия ГОСТам).
  • 👍 4
Post #728 737
Всем привет. Я уже делал цикл из 5 вебинаров про ГОСТ Р 71207—2024 (Статический анализ программного обеспечения): Общее описание и актуальность, Терминология, Критические ошибки, Технологии анализа кода, Процессы.
 
С тех времён я переосмыслил некоторые моменты. Прошли испытания статических анализаторов. Вышел ГОСТ Р 56939—2024 и так далее.
 
Поэтому меня посетила мысль вновь сделать обзор стандарта, но немного в другом формате: брать разные фрагменты из него и комментировать/обсуждать. Образно говоря, читать и разбирать ГОСТ вслух с интонацией, комментариями и отсылками :)
 
Это можно сделать по-разному:
 
1. Просто сесть и сделать записи. Потом это можно будет слушать как мини аудио-книгу/подкаст.
 
2. Сделать стрим, где попутно будут задаваться вопросы по разбираемому месту.
 
Второй вариант подразумевает, что это будет интересно аудитории и люди соберутся, иначе теряется смысл и проще пойти по первому пути. Решил сделать предварительный опрос.
Post #726 426
Тяжело, когда ты программист и привык чётко воспринимать условия в повествовании :)

Из описания конференции.

Мы не делаем
* Без воды и теории из интернета
* Без курсов и инфоцыган
* Не продаём и не рекламируем со сцены
  • 😁 4
  • 👌 1
Post #724 605
Сегодня записи сразу двух вебинаров на тематику создания надёжных программных проектов.

Автоматизация контроля качества и безопасности ПО
Вебинар посвящен тому, как встроить практики качества и безопасности в ежедневный цикл разработки. Эксперты PVS-Studio и Apsafe рассказали, почему статический анализ и автоматизированные проверки стали доступными инструментами для любой команды и как регулярный контроль безопасности помогает успевать за современным ритмом релизов без перестройки CI/CD.
 
Валерий Филатов (Developer Advocate, PVS-Studio) рассказал в своем докладе "Зачем платить за то, что уже работает?" о том что когда-то код-ревью, автотесты и CI/CD казались лишней бюрократией — дорогой и доступной немногим. Со временем выяснилось, что без них инциденты обходятся дороже, чем сама практика, а инструменты подтянулись настолько, что теперь это может себе позволить любая команда. На примере статического анализа посмотрели, почему Best Practices давно перестали быть недостижимым идеалом.
 
Виктор Тимашков (руководитель группы Apsafe) в своем докладе "Безопасность приложения это не разовая проверка, а ритм релиза" объяснил, что разовые пентесты и квартальные аудиты не успевают за поставкой: код уходит в прод чаще, чем его успевают «проверить снаружи». Разобрали, почему контроль должен повторяться вместе с релизом, что меняется в процессе разработки и как облачный контур (на примере Apsafe) встраивает проверки в этот ритм без перестройки CI/CD. 


Применение ЗОСРВ "Нейтрино" и PVS-Studio для разработки ПО согласно требованиям МЭК 61508

На вебинаре разобрали подходы к разработке функционально безопасного ПО для ЗОСРВ «Нейтрино» в соответствии с требованиями МЭК 61508 и показали, какую роль в этом процессе играют инструменты статического анализа.
 
В первой части поговорили о принципах разработки ПО для «Нейтрино», рассмотрели требования МЭК 61508 к инструментальным средствам, и продемонстрировали работу PVS-Studio в комплекте разработчика «Нейтрино».
 
Во второй части подробнее остановились на статическом анализе как инструменте для обеспечения безопасности. Разобрали требования МЭК 61508 и МЭК 26262, их связь со стандартами MISRA и рассмотрели, как PVS-Studio помогает контролировать качество и соответствие кода требованиям стандартов.
 
В завершение рассказали о новой мажорной версии PVS-Studio 8.0: рассмотрели ключевые изменения и нововведения релиза и обозначили дальнейшие направления развития инструмента, включая функциональную безопасность.
  • 🔥 3
  • 👍 2
Post #723 388
На случай, если вы пропустили информацию об одной из наших интеграций PVS-Studio с внешними системами. См. статью.
  • 🔥 5
Post #722 468
Older posts →

About this channel

How can I read @programming_tales without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Бестиарий программирования: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Бестиарий программирования have?
Бестиарий программирования (@programming_tales) has 1.14K subscribers on Telegram, refreshed roughly every 30 minutes.
Does Бестиарий программирования know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →