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

ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода
Download Telegram
Сразись с анализатором PVS-Studio в поиске ошибок! 🆚

Мы выбрали 10 фрагментов кода, в которых наш анализатор нашел ошибки. Все они взяты из известных Open-Source проектов

Скорее переходи на наш новый Java-квиз и проверь, насколько ты внимательный 🔎

Так же у нас есть квизы для C++ и C# программистов

#Квиз_PVS
Forwarded from GDG Tashkent (Sarvinoz Maksudova 🌾)
⚡️Осторожно: розыгрыш билетов!

💡Startup Weekend - это пре-акселетраторская программа, которая помогает участникам запустить свой стартап за 3 дня. В течение 54 часов участники смогут собрать команду, получить необходимые знания и инструменты для разработки своего стартапа.

❗️Именно этот Startup Weekend будет Women Edition  и в нем могут участвовать исключительно девушки.

🥁Для наших подписчиков мы разыгрываем 5 билетов.

Условия просты (только девушкам):

подписаться на нашу страницу (@gdgtashkent )
подписаться на страницу (@swtashkent)
отметить 3 друзей под этим постом
📝написать #startupmustgoon в комментариях

🔍 Конкурс проходит в Инстаграмме

🔥Не упустите эту возможность! Возможно именно вы станете обладателем заветного билета.

🎫 Билеты будут разыграны 18 мая в 21:00.

@gdgtashkent
Forwarded from Agile Uzbekistan news (Наталья Ни | Узбекистан)
Собираемся на тусовку @AgileUzbekistanCom и @Productcommunityuz!

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

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

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

До встречи на весенней встрече проджектов и продактов в баре Gravity!
Meetup: Обеспечение качества vs тестирование

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

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

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

Регистрируйтесь по ссылке: https://forms.gle/cpeMe38K6s2RwvTFA
Опубликовал мини-книгу "60 антипаттернов для С++ программиста". Приятного чтения.
Всё одновременно в шутку и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
Ещё скоро выйдет расширенный бумажный вариант. Но это уже другая история.
---
EN: "60 terrible tips for a C++ developer".
🔥71👍1
Всего за 8 минут проект собрал в 13 раз больше заявленной суммы на инвестиционной площадке KickStarter. Обзоры их продукта собирают миллионы просмотров на англоязычном YouTube. Только в их каталоге вы найдете легендарную олдскульную игру по мотивам мультфильма «Ну погоди!».

Представляем вашему вниманию интервью с разработчиками Flipper Zero! https://pvs-studio.ru/ru/blog/posts/1075/
Команда PVS-Studio подготовила для вас необычный конкурс!
Связан он с вашими эпичными или мемными фейлами при написании кода. Это тот случай, когда за ошибку вы получите не нагоняй от тимлида, а крутой подарок!

Все подробности по ссылке https://habr.com/ru/companies/pvs-studio/articles/775388/
🔥1
Тук-тук… А мы с новостями! Да еще с какими!

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

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

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

Ждём вас! 😉
🔥3
Channel name was changed to «Бестиарий программирования»
Решил переиспользовать старый канал, посвящённый мероприятиям программистов. Буду размещать здесь свои наблюдения из мира программирования, багов, языка C++ и качества кода. А чтобы быть в курсе предстоящих конференций, приглашаю посетить специализированный раздел нашего сайта Мероприятия для программистов.
👍2
Подал заявку на конференцию SafeCode, посвящённую инструментами и практике безопасной разработки. В ходе демонстрационного доклада программный комитет усомнился, что ошибка использования memset, действительно была найдена нами в LLVM :). Не верится, что разработчики компилятора, могут местами аргументы функции перепутать. Могут. Сейчас нашёл старую публикацию и соответствующий commit с правкой бага. Вставлю в презентацию в качестве proof-а :)
Даже высококвалифицированные разработчики не застрахованы от простых ошибок и опечаток.
🔥5👍2
Не люблю макросы по разным причинам. Одна из них, что они сильно разрывают восприятие программы. Вот хороший пример сейчас встретил в проекте DPDK: по отдельности код смотрится нормально, а вместе фигня получается :)
Блок кода из юнит-тестов – вроде OK.
Макрос MAX_NUM тоже на первый взгляд нормальный.
Однако, при подстановке получаем: 1 << 20 / 2. Приоритет операции деления выше, чем сдвига. Получаем: 1 << 10. Каждый из циклов перебирает не 1048576 варианта, а только 1024. Итого, тест проверяет только одну миллионную часть от того, что должен :)
На ревью такое заметить можно, но сложно. Нужно явно посмотреть, во что макрос раскрывается и ещё в голове подстановку сделать.
Спасибо PVS-Studio за предупреждение V634. Но лучше не макросы, а константные переменные использовать или constexpr в C++.
👍1
Бестиарий программирования
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
Выложили подкаст, в котором я недавно участвовал. Приятного всем прослушивания и спасибо организаторам.

P.S. Если кто-то делает подкасты/вебинары программисткой направленности, то знайте, команда PVS-Studio всегда открыта к сотрудничеству.
Годы идут, а ошибки затирания приватных данных по прежнему прекрасно себя чувствуют и процветают. Очередное гнездо я встретил в DPDK. Суть в том, что если после memset буфер памяти не используется, то и заполнять его не обязательно. Компиляторы удаляют вызов memset. Нужно использовать memset_s, RtlSecureZeroMemory или их аналогии. Подробнее: V597, CWE-14.
👍3😱1
Если попросить программиста назвать типовые ошибки, то скорее всего он назовёт неинициализированные переменные, деление на 0, разыменование нулевого указателя. Но насколько то, что сразу приходит в голову, в действительности часто можно встретить к коде? Чего больше: ошибок выхода за границу массива или опечаток вида if (A == A)? Интересные наблюдения за миром ошибок ждут вас в моём докладе "Ошибки в коде: ожидания и реальность".
👍1
1 апреля 2024 года введён в действие новый ГОСТ Р 71207–2024 "Статический анализ программного обеспечения". Если в ГОСТ Р 56939–2016 говорится о необходимости использования статического анализа при разработке безопасного программного обеспечения (РБПО), то ГОСТ Р 71207–2024 уточняет, что именно это означает.
Информация в ГОСТ очень плотная, и её тяжело сразу воспринять, если вы ранее не имели дело со статическим анализом кода и РБПО. Поэтому я подготовил и провёл цикл из 5 вебинаров, где разобрал различные аспекты ГОСТ и примерами пояснил некоторых термины.
👍3