Бестиарий программирования – Telegram
Бестиарий программирования
903 subscribers
280 photos
4 videos
4 files
344 links
Наблюдения за жизнью ошибок в коде.
Андрей Карпов.

ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода
Download Telegram
2024_10_30_Андрей_Карпов_SafeCode_Модельные_варианты_ошибок.pdf
2.9 MB
Выступил сегодня на SafeCode с докладом "Модельные варианты ошибок, или Как статические анализаторы находят ошибки, которые не могут искать". В открытом доступе запись появится позже, а пока решил поделиться презентацией.
P.S. Спасибо Андрею Кулешову
🔥3
В моём докладе на SafeCode была юмористическая вставка на тему "опровержение великой теоремы Ферма с помощью оптимизирующего компилятора". Сегодня опубликована 8 часть путеводителя C++ программиста по неопределённому поведению. В ней можно прочитать про это подробнее.
👍31🔥1
Тема разыменования нулевых указателей стара, страшна и интересна. Неопределённое поведение всегда или нет? Я уже касался этой темы в 2015 году. Но в этом вопросе точку поставить не получается :) Есть масса нюансов. Языки С и C++ пошли немного разыми путями в этом вопросе. Меняются формулировки в стандарте.

Очередное разбирательство с этим вопросом вас ждёт в 9 главе книги про неопределённому поведению. См. главу "Исполнение программы: разыменование нулевых указателей".
👍4
Кстати, а вы знали что в C++ долго была подпорка на будущие в виде функций declare_reachable и undeclare_reachable для тех радужных времён, когда появится сборщик мусора? Если вам интересно что это такое и при этом вы пропустили 8 главу книги про UB, то самое время почитать - https://pvs-studio.ru/ru/blog/posts/cpp/1178/#ID80C8125AE7
Вмешательство в рабочую систему больше похоже на вскрытие головного мозга и замену нерва, чем на замену прокладки в кране. Облегчилось ли бы сопровождение программ, если б оно называлось "нейрохирургией ПО"?
Джеральд Вайнберг (Gerald Weinberg)
Forwarded from S0ER
Челлендж: 🤣🤣🤣 Расскажи бабушке про статанализ

Скоро Новый год, время подрков и несерьезных челленджей.

Задача простая: в комментариях к этому посту максимально простым языком напишите что такое статанлиз, так чтобы даже бабушка поняла (можно в шуточной форме).

Кто соберет больше всего положительных реакций под комментарием получит приз - книгу «60 антипаттернов для С++ программиста» автор Андрей Карпов - сооснователь копании PVS-Studio.

Книга будет полезна новичкам, кто хочет глубже изучить C++ и понять почему некоторые вещи делать вредно. А самое ценное - в книге опсано еще и "почему" вредно!

Чтобы вы прониклись всей важностью момента, книгу нельзя купить в магазине, это ограниченный тираж, который расходится только между своими!

P.S. Итоги подведем на стриме в выходные! Торопитесь, времени мало!

SOER | PRO | Boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
PVS-Studio соответствует требованиям ГОСТ Р 71207—2024 (статический анализ программного обеспечения)
Давно ничего не публиковал, так как почти все силы уходили на большой обзор PVS-Studio с точки зрения ГОСТ. Тяжело пошло, так как это непривычный мне формат повествования. Но результат мне нравится. Получилось основательно, я бы даже сказал монументально :) Не скажу, что всем стоит почитать. Просто полистайте и знайте, что теперь есть эта справочная статья, к которой можно обратиться, на случай если столкнётесь с тематикой РБПО, сертификаций и т.д.
🔥4👍1
Media is too big
VIEW IN TELEGRAM
🎄С наступающим Новым годом, друзья! Примите от нас самые "наилучшие" пожелания!

🎁Ваш новогодний подарок - промокод на бесплатное использование PVS-Studio в течение 30 дней. Переходите по ссылке: https://pvs-studio.ru/NewYear_tg

#видео #НовыйГод
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🎉1
Вы хотите идти в ногу со временем и перевести ваш проект на полиморфные аллокаторы? Вас не могут отговорить от этого даже затраты на виртуальные вызовы? Тогда вы просто обязаны знать о нюансах с лайфтаймом, и почему нельзя просто взять и поменять свои контейнеры на аналоги из пространства имён pmr.

Все подробности по ссылке 🔗

#статья #cpp
Please open Telegram to view this post
VIEW IN TELEGRAM
Приглашаю скачать мою книгу "Вредные советы для C++ программистов" в PDF формате. Можно и нужно делиться ссылкой с коллегами и в соцсетях :)
🔥6👏4
Коряво оформленный код притягивает ошибки. Полез в проект TDengine и прям сходу вот такая длинное и неправильное условие (1). PVS-Studio обращает внимание, что два раза выполняется одинаковое сравнение (2).

Согласитесь, в длинной колбасе баг не заметен. Достаточно отформатировать код (3) и аномалия сразу как на ладони.

Будем считать, что повторная проверка лишняя и что-то ещё проверять не надо. Удаляем, плюс немного рефакторинга (4). Красота! Заодно функции сократилось с 5 строк, до 4.
👍5🤔1
Проект TDengine. Красивое!

Кто видит ошибку? ;)

В последней проверке скобочка не там поставлена. Результат вызова функции InitRegexCache сравнивается с 0, и только затем 0 или 1 записывается в code.
PVS-Studio:
V593 Consider reviewing the expression of the 'A = B != C' kind. The expression is calculated as following: 'A = (B != C)'. dmEnv.c 182
👏4