На первые 90% кода приходится первые 90% времени разработки. На оставшиеся 10% кода приходятся другие 90% времени разработки.
Том Каргилл (Tom Cargill)
Том Каргилл (Tom Cargill)
⚡1🔥1
Слайд из доклада на Innovation Week. Если не брать Python, то анализатор PVS-Studio по-прежнему анализирует код, написанный на самых популярных языках C, C++, Java, C#. Будем продолжать углублять анализ в их направлении. Кстати, про новое: PVS-Studio 7.33: критические ошибки, пользовательские аннотации в C#, поддержка SN-DBS и многое другое.
⚡6
Очередной баг из проекта LLVM. PVS-Studio выдаёт предупреждение: V522 Dereferencing of the null pointer 'target' might take place. LinalgTransformOps.cpp 2219
Перед нами случай когда анализатор выдаёт в каком-то смысле ложное предупреждение, но позволяет найти ошибку. Другими словами – это косвенное выявление ошибки.
Если условие if (!target) выполнится, то произойдёт разыменование нулевого указателя: target->getLoc(). Про это анализатор и выдал предупреждение. Но на самом деле, этот указатель никогда не будет нулевым. Однако не спешите делать вывод про недостижимый код.
Ошибка в том, что проверяется не тот указатель. Нужно проверять не target, а tilingOp. Опечатка.
Перед нами случай когда анализатор выдаёт в каком-то смысле ложное предупреждение, но позволяет найти ошибку. Другими словами – это косвенное выявление ошибки.
Если условие if (!target) выполнится, то произойдёт разыменование нулевого указателя: target->getLoc(). Про это анализатор и выдал предупреждение. Но на самом деле, этот указатель никогда не будет нулевым. Однако не спешите делать вывод про недостижимый код.
Ошибка в том, что проверяется не тот указатель. Нужно проверять не target, а tilingOp. Опечатка.
Ошибка из статьи, которую я сейчас пишу. Случай, когда вроде всё просто, но на самом деле сложнее. Кажется, что ошибка проявит себя только при попытке сбросить биты в старшей 32-битной части 64-битной переменной. А если idx < 32 то всё должно работать. Да, но нет :)
Серьезным программистам я хочу сказать: уделяйте часть рабочего дня изучению и улучшению собственных методик. Хотя на программистов всегда давит какой-то бедующий или прошедший срок, методологическая абстракция – мудрая долговременная инвестиция.
Роберт У. Флойд (Robert W. Floyd)
Роберт У. Флойд (Robert W. Floyd)
Образ разработчика, проектирующего программу рациональным безошибочным способом на основе ясно сформулированных требований, совершенно нереалистичен. Никакая система так никогда не разрабатывалась и, наверное, не будет разрабатываться. Даже примеры разработки небольших программ, встречающихся в учебниках, нереалистичны. Авторы перепроверяют и улучшают их до тех пор, пока не продемонстрируют нам то, что они хотели бы получить, а не то, что получилось на самом деле.
Дэвид Парнас и Пол Клементс (David Parnas and Paul Clements)
Дэвид Парнас и Пол Клементс (David Parnas and Paul Clements)
🔥3
2024_10_30_Андрей_Карпов_SafeCode_Модельные_варианты_ошибок.pdf
2.9 MB
Выступил сегодня на SafeCode с докладом "Модельные варианты ошибок, или Как статические анализаторы находят ошибки, которые не могут искать". В открытом доступе запись появится позже, а пока решил поделиться презентацией.
P.S. Спасибо Андрею Кулешову
P.S. Спасибо Андрею Кулешову
🔥3
В моём докладе на SafeCode была юмористическая вставка на тему "опровержение великой теоремы Ферма с помощью оптимизирующего компилятора". Сегодня опубликована 8 часть путеводителя C++ программиста по неопределённому поведению. В ней можно прочитать про это подробнее.
👍3❤1🔥1
Тема разыменования нулевых указателей стара, страшна и интересна. Неопределённое поведение всегда или нет? Я уже касался этой темы в 2015 году. Но в этом вопросе точку поставить не получается :) Есть масса нюансов. Языки С и C++ пошли немного разыми путями в этом вопросе. Меняются формулировки в стандарте.
Очередное разбирательство с этим вопросом вас ждёт в 9 главе книги про неопределённому поведению. См. главу "Исполнение программы: разыменование нулевых указателей".
Очередное разбирательство с этим вопросом вас ждёт в 9 главе книги про неопределённому поведению. См. главу "Исполнение программы: разыменование нулевых указателей".
👍4
Кстати, а вы знали что в 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