Кстати, а вы знали что в C++ долго была подпорка на будущие в виде функций declare_reachable и undeclare_reachable для тех радужных времён, когда появится сборщик мусора? Если вам интересно что это такое и при этом вы пропустили 8 главу книги про UB, то самое время почитать - https://pvs-studio.ru/ru/blog/posts/cpp/1178/#ID80C8125AE7
PVS-Studio
Путеводитель C++ программиста по неопределённому поведению: часть 8 из 11
Вашему вниманию предлагается восьмая часть электронной книги, которая посвящена неопределённому поведению. Книга не является учебным пособием и рассчитана на тех, кто уже хорошо знаком с...
Вмешательство в рабочую систему больше похоже на вскрытие головного мозга и замену нерва, чем на замену прокладки в кране. Облегчилось ли бы сопровождение программ, если б оно называлось "нейрохирургией ПО"?
Джеральд Вайнберг (Gerald Weinberg)
Джеральд Вайнберг (Gerald Weinberg)
Forwarded from S0ER
Челлендж: 🤣 🤣 🤣 Расскажи бабушке про статанализ
Скоро Новый год, время подрков и несерьезных челленджей.
Задача простая: в комментариях к этому посту максимально простым языком напишите что такое статанлиз, так чтобы даже бабушка поняла (можно в шуточной форме).
Кто соберет больше всего положительных реакций под комментарием получит приз - книгу «60 антипаттернов для С++ программиста» автор Андрей Карпов - сооснователь копании PVS-Studio.
Книга будет полезна новичкам, кто хочет глубже изучить C++ и понять почему некоторые вещи делать вредно. А самое ценное - в книге опсано еще и "почему" вредно!
Чтобы вы прониклись всей важностью момента, книгу нельзя купить в магазине, это ограниченный тираж, который расходится только между своими!
P.S. Итоги подведем на стриме в выходные! Торопитесь, времени мало!
SOER | PRO | Boosty
Скоро Новый год, время подрков и несерьезных челленджей.
Задача простая: в комментариях к этому посту максимально простым языком напишите что такое статанлиз, так чтобы даже бабушка поняла (можно в шуточной форме).
Кто соберет больше всего положительных реакций под комментарием получит приз - книгу «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 с точки зрения ГОСТ. Тяжело пошло, так как это непривычный мне формат повествования. Но результат мне нравится. Получилось основательно, я бы даже сказал монументально :) Не скажу, что всем стоит почитать. Просто полистайте и знайте, что теперь есть эта справочная статья, к которой можно обратиться, на случай если столкнётесь с тематикой РБПО, сертификаций и т.д.
Давно ничего не публиковал, так как почти все силы уходили на большой обзор PVS-Studio с точки зрения ГОСТ. Тяжело пошло, так как это непривычный мне формат повествования. Но результат мне нравится. Получилось основательно, я бы даже сказал монументально :) Не скажу, что всем стоит почитать. Просто полистайте и знайте, что теперь есть эта справочная статья, к которой можно обратиться, на случай если столкнётесь с тематикой РБПО, сертификаций и т.д.
Хабр
PVS-Studio соответствует требованиям ГОСТ Р 71207—2024 (статический анализ программного обеспечения)
Инструментальное средство PVS-Studio разрабатывается с учётом требований, предъявляемых к статическим анализаторам в ГОСТ Р 71207–2024, выявляет критические ошибки и может использоваться при...
🔥4👍1
А вот и новогодние подборки лучших ошибок прибыли. Топ-10 ошибок за 2024 год, найденных в:
C++ проектах
C# проектах
Java проектах
C++ проектах
C# проектах
Java проектах
PVS-Studio
Судный день: топ-10 ошибок в C и C++ проектах за 2024 год
Каждый год мы наблюдаем одинаковую картину: ошибки портят нам код, пытаясь доказать, что они здесь главные. Но сегодня настал день расправы. Давайте посмотрим, какие самые интересные баги мы нашли в...
👍3🔥1
Forwarded from PVS-Studio: поиск ошибок в С/С++, С# и Java
Media is too big
VIEW IN TELEGRAM
#видео #НовыйГод
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🎉1
https://pvs-studio.ru/ru/blog/posts/cpp/1211/
Всё! Последняя часть из серии про неопределённое поведение. Символично, что 12-ая статья из 11 вышла под номером 1211 :). Приятного чтения.
Всё! Последняя часть из серии про неопределённое поведение. Символично, что 12-ая статья из 11 вышла под номером 1211 :). Приятного чтения.
PVS-Studio
Путеводитель C++ программиста по неопределённому поведению: часть 12 из 11
Вашему вниманию предлагается заключительная двенадцатая часть электронной книги, которая посвящена неопределённому поведению. Книга не является учебным пособием и рассчитана на тех, кто уже хорошо...
👍2
Forwarded from PVS-Studio: поиск ошибок в С/С++, С# и Java
Вы хотите идти в ногу со временем и перевести ваш проект на полиморфные аллокаторы? Вас не могут отговорить от этого даже затраты на виртуальные вызовы? Тогда вы просто обязаны знать о нюансах с лайфтаймом, и почему нельзя просто взять и поменять свои контейнеры на аналоги из пространства имён pmr.
Все подробности по ссылке🔗
#статья #cpp
Все подробности по ссылке
#статья #cpp
Please open Telegram to view this post
VIEW IN TELEGRAM
Приглашаю скачать мою книгу "Вредные советы для C++ программистов" в PDF формате. Можно и нужно делиться ссылкой с коллегами и в соцсетях :)
🔥6👏4
https://habr.com/ru/companies/pvs-studio/articles/877274/
Собрал в статью-агрегатор ссылки на все части электронной книги "Путеводитель C++ программиста по неопределённому поведению". Кладите в закладки и желаю приятного чтения.
Собрал в статью-агрегатор ссылки на все части электронной книги "Путеводитель C++ программиста по неопределённому поведению". Кладите в закладки и желаю приятного чтения.
Хабр
Путеводитель C++ программиста по неопределённому поведению
Вашему вниманию предлагается полный список разделов электронной книги (12 из 11 :)), посвящённой неопределённому поведению. Книга не является учебным пособием и рассчитана на тех, кто уже хорошо...
❤4🔥4
Коряво оформленный код притягивает ошибки. Полез в проект TDengine и прям сходу вот такая длинное и неправильное условие (1). PVS-Studio обращает внимание, что два раза выполняется одинаковое сравнение (2).
Согласитесь, в длинной колбасе баг не заметен. Достаточно отформатировать код (3) и аномалия сразу как на ладони.
Будем считать, что повторная проверка лишняя и что-то ещё проверять не надо. Удаляем, плюс немного рефакторинга (4). Красота! Заодно функции сократилось с 5 строк, до 4.
Согласитесь, в длинной колбасе баг не заметен. Достаточно отформатировать код (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
Кто видит ошибку? ;)
PVS-Studio:
👏4
Продолжаю бродить по просторам проекта TDengine. Интересный пример косвенного обнаружения ошибки с помощью предупреждения PVS-Studio: V781 The value of the 'size' variable is checked after it was used. Perhaps there is a mistake in program logic. Check lines: 362, 363. osMemory.c 362
Анализатор говорит, что подозрительно проверять значение
И вроде анализатор выдал предупреждение мимо. Однако, указав на код с запахом, он заставляет сделать его более внимательный обзор. Становится ясно, что код ещё хуже чем казался на первый взгляд. До C23 он плох, но ещё терпим, т. к. всего лишь behavior is implementation defined.
А начиная с C23 это уже вообще UB: if new_size is zero, the behavior is undefined.
Анализатор говорит, что подозрительно проверять значение
size после его использования (передачу в функцию realloc). Однако, по задумке автора кода, это нормально. Смысл проверки в следующем: если выделялось более нуля байт, то проверяем, что память удалось выделить. Если выделяли 0 байт, то возврат NULL из функции это ok.И вроде анализатор выдал предупреждение мимо. Однако, указав на код с запахом, он заставляет сделать его более внимательный обзор. Становится ясно, что код ещё хуже чем казался на первый взгляд. До C23 он плох, но ещё терпим, т. к. всего лишь behavior is implementation defined.
А начиная с C23 это уже вообще UB: if new_size is zero, the behavior is undefined.
GEOS. Красивое :)
PVS-Studio: V557 Array overrun is possible. The '0' index is pointing beyond array bound. string.cpp 54
PVS-Studio: V557 Array overrun is possible. The '0' index is pointing beyond array bound. string.cpp 54
❤🔥1