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

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

@programming_tales

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

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

Канал-дублёр в MAX: https://max.ru/join/3VWTp9apkQvTMSRQ__LGiTQ5NGVBj8p_tOpwlQO6vS8
Subscribers
1.14K
Photos
398
Videos
5
Links
493

Showing posts older than #151 · Back to latest

Older Posts 18 shown
Post #150 231
Мы учим анализатор PVS-Studio искать не только универсальные ошибки, но и связанные с использованием распространённых библиотек. Например, в рамках поддержки из GameDev индустрии, мы реализуем специализированные диагностики для Unity и Unreal Engine.

Более того, появляются не только диагностики для поиска багов, но и для микрооптимизаций. Мы честно не называем это оптимизацией потому, что у статического анализатора недостаточно информации, как часто выполняются различные участки кода. Для оптимизации следует использовать профайлеры.

Тем не менее, определённый выигрыш можно получить. Пример такой диагностики V4006. Помогает сократить количество математических операций, выполняемых над матрицами, векторами и т.д.

Если заинтересовались попробовать PVS-Studio, то промокод progtales позволяет получить триальную версию сразу на месяц.
  • 👍 4
Post #149 322
1 апреля 2024 года введён в действие новый ГОСТ Р 71207–2024 "Статический анализ программного обеспечения". Если в ГОСТ Р 56939–2016 говорится о необходимости использования статического анализа при разработке безопасного программного обеспечения (РБПО), то ГОСТ Р 71207–2024 уточняет, что именно это означает.
Информация в ГОСТ очень плотная, и её тяжело сразу воспринять, если вы ранее не имели дело со статическим анализом кода и РБПО. Поэтому я подготовил и провёл цикл из 5 вебинаров, где разобрал различные аспекты ГОСТ и примерами пояснил некоторых термины.
  • 👍 3
Post #147 195
Post #145 204
Если попросить программиста назвать типовые ошибки, то скорее всего он назовёт неинициализированные переменные, деление на 0, разыменование нулевого указателя. Но насколько то, что сразу приходит в голову, в действительности часто можно встретить к коде? Чего больше: ошибок выхода за границу массива или опечаток вида if (A == A)? Интересные наблюдения за миром ошибок ждут вас в моём докладе "Ошибки в коде: ожидания и реальность".
  • 👍 1
Post #144 249
Годы идут, а ошибки затирания приватных данных по прежнему прекрасно себя чувствуют и процветают. Очередное гнездо я встретил в DPDK. Суть в том, что если после memset буфер памяти не используется, то и заполнять его не обязательно. Компиляторы удаляют вызов memset. Нужно использовать memset_s, RtlSecureZeroMemory или их аналогии. Подробнее: V597, CWE-14.
  • 👍 3
  • 😱 1
Post #143 173
Post #142 171
Выложили подкаст, в котором я недавно участвовал. Приятного всем прослушивания и спасибо организаторам.

P.S. Если кто-то делает подкасты/вебинары программисткой направленности, то знайте, команда PVS-Studio всегда открыта к сотрудничеству.
Post #141 181
Бестиарий программирования 1 << 20 / 2
Вчера немного поспешил с числами.

(1 << (20 / 2)) * (1 << (20 / 2)) = 1024 * 1024 = 1048576
((1 << 20) / 2) * ((1 << 20) / 2) = 524288 * 524288 = 274877906944
274877906944/1048576 = 262144

Так что перебирается не в миллион раз меньше комбинаций, а 250 тысяч :)

Впрочем, суть ошибки это не меняет. Кстати, если её исправить, возможно проявится другая проблема с тестов. Вернее, выяснится, что он работает слишком медленно и его надо переделывать.
  • 🔥 1
Post #140 184
Не люблю макросы по разным причинам. Одна из них, что они сильно разрывают восприятие программы. Вот хороший пример сейчас встретил в проекте DPDK: по отдельности код смотрится нормально, а вместе фигня получается :)
Блок кода из юнит-тестов – вроде OK.
Макрос MAX_NUM тоже на первый взгляд нормальный.
Однако, при подстановке получаем: 1 << 20 / 2. Приоритет операции деления выше, чем сдвига. Получаем: 1 << 10. Каждый из циклов перебирает не 1048576 варианта, а только 1024. Итого, тест проверяет только одну миллионную часть от того, что должен :)
На ревью такое заметить можно, но сложно. Нужно явно посмотреть, во что макрос раскрывается и ещё в голове подстановку сделать.
Спасибо PVS-Studio за предупреждение V634. Но лучше не макросы, а константные переменные использовать или constexpr в C++.
  • 👍 1
Post #136 195
Подал заявку на конференцию SafeCode, посвящённую инструментами и практике безопасной разработки. В ходе демонстрационного доклада программный комитет усомнился, что ошибка использования memset, действительно была найдена нами в LLVM :). Не верится, что разработчики компилятора, могут местами аргументы функции перепутать. Могут. Сейчас нашёл старую публикацию и соответствующий commit с правкой бага. Вставлю в презентацию в качестве proof-а :)
Даже высококвалифицированные разработчики не застрахованы от простых ошибок и опечаток.
  • 🔥 5
  • 👍 2
Post #135 205
Решил переиспользовать старый канал, посвящённый мероприятиям программистов. Буду размещать здесь свои наблюдения из мира программирования, багов, языка C++ и качества кода. А чтобы быть в курсе предстоящих конференций, приглашаю посетить специализированный раздел нашего сайта Мероприятия для программистов.
  • 👍 2
Post #133
Channel name was changed to «Бестиарий программирования»
Post #132 718

Forwarded from PVS-Studio: поиск ошибок в коде

Тук-тук… А мы с новостями! Да еще с какими!

Рады сообщить, что совсем скоро вас ждет интересный вебинар. Мы расскажем, как с помощью статического анализатора кода PVS-Studio избежать ошибки на проде и постоянные задержки релиза.

Вебинар пройдет 1 февраля в 14:00 📌

Зарегистрироваться можно по ссылке - https://pvs-studio.ru/ru/webinar/

Ждём вас! 😉
  • 🔥 3
Post #131 906

Forwarded from PVS-Studio: поиск ошибок в коде

Команда PVS-Studio подготовила для вас необычный конкурс!
Связан он с вашими эпичными или мемными фейлами при написании кода. Это тот случай, когда за ошибку вы получите не нагоняй от тимлида, а крутой подарок!

Все подробности по ссылке https://habr.com/ru/companies/pvs-studio/articles/775388/
Хабр Конкурс для C++ программистов и их любимых багов Привет всем крутым C и С++ разработчикам! Команда PVS-Studio на связи. Новый год не за горами, поэтому мы подготовили вам новый конкурс с призами! Все мы люди, всем свойственно ошибаться. Обычно за...
  • 🔥 1
Post #130 883

Forwarded from PVS-Studio: поиск ошибок в коде

Всего за 8 минут проект собрал в 13 раз больше заявленной суммы на инвестиционной площадке KickStarter. Обзоры их продукта собирают миллионы просмотров на англоязычном YouTube. Только в их каталоге вы найдете легендарную олдскульную игру по мотивам мультфильма «Ну погоди!».

Представляем вашему вниманию интервью с разработчиками Flipper Zero! https://pvs-studio.ru/ru/blog/posts/1075/
PVS-Studio Интервью с разработчиками мультитула для хакеров и пентестеров Flipper Zero Flipper Zero — карманный мультитул для гиков, сокровище для пентестеров, ваш собственный кибер-зверёк. Возможности девайса ограничиваются только вашим воображением и сноровкой.
Post #129 1.67K
Опубликовал мини-книгу "60 антипаттернов для С++ программиста". Приятного чтения.
Всё одновременно в шутку и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
Ещё скоро выйдет расширенный бумажный вариант. Но это уже другая история.
---
EN: "60 terrible tips for a C++ developer".
  • 🔥 7
  • ❤ 1
  • 👍 1
Post #128 995

Forwarded from Никита Палагин

Meetup: Обеспечение качества vs тестирование

20 мая 16:00 в IT Park Tashkent состоится митап на тему "Обеспечение качества vs тестирование". В ходе мероприятии поговорим об обеспечении качества и чем оно отличается от тестирования.

Спикером мероприятия выступит Мария Палагина - эксперт в области обеспечения качества, которая поделится своим опытом и знаниями.

Участие бесплатное, однако необходима предварительная регистрация.
Адрес:
IT Park Tashklent

Регистрируйтесь по ссылке: https://forms.gle/cpeMe38K6s2RwvTFA
Post #127 728

Forwarded from Agile Uzbekistan news (Наталья Ни | Узбекистан)

Собираемся на тусовку @AgileUzbekistanCom и @Productcommunityuz!

🔥🔥🔥🔥🔥
24 мая в баре Gravity с 19:30 состоится встреча проджектов и продактов в Узбекистане!
Зачем?

Встреча организовывается для нетворкинга: приходи, знакомься и расширяй свою сеть нетворкинга в IT сфере!
Для регистрации требуется заполнить форму по ссылке и оплатить 100.000 сум.
Оплата по карте: 8600530412286489 до 22 мая (Скрин о переводе @ni_nataly)
В стоимость входит на выбор боул или бургер из меню (либо боул, либо бургер).

Вход строго по списку, проверяться будет на входе в Gravity.

До встречи на весенней встрече проджектов и продактов в баре Gravity!
Older posts →
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 →