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

ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода
Download Telegram
Годы идут, а ошибки затирания приватных данных по прежнему прекрасно себя чувствуют и процветают. Очередное гнездо я встретил в 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
Мы учим анализатор PVS-Studio искать не только универсальные ошибки, но и связанные с использованием распространённых библиотек. Например, в рамках поддержки из GameDev индустрии, мы реализуем специализированные диагностики для Unity и Unreal Engine.

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

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

Если заинтересовались попробовать PVS-Studio, то промокод progtales позволяет получить триальную версию сразу на месяц.
👍4
Вы знали про ISO week date? Я – нет. Оказывается, есть форматирование даты, с номером года относительно недели. На практике это нужно очень редко. Поэтому, если кто-то в Java использовал спецификатор YYYY, вместо yyyy, он почти наверняка ошибся. Сделали в PVS-Studio новую диагностику на эту тему.

См. также: SimpleDateFormat YYYY против yyyy.
😱5
Добавил комментарии. Прошу написать что-то доброе для тестирования.
😁1
Коллега делает новую диагностику для PVS-Studio, касающуюся некорректного использования dynamic_cast для COM-интерфейсов, где нужен вызов QueryInterface.

Читаю документацию на диагностику и чувствую, что что-то не так. Но я так давно работал с COM, что уже всё забыл и затрудняюсь сформулировать замечания. Потом я вспоминаю про свои "COM-конспект" и о чудо, тетрадка находится. Через 15 минут листания я осознаю, что мне не нравится в описании.

Однако, пост побудила написать другая мысль. А сейчас так изучают программирование? Конспектируют, зарисовывают? Или всё подменил условный ютуб, дающий информацию быстро, но не дающий остановиться, обдумать услышанное, записать. Конечно, это возможно. Однако, я видел, как люди что-то выписывают, читая книги про программирования. И сам так делал. Но я не вижу такое при просмотре докладов, обучающих видео, лекций. Да и вообще кажется я сейчас не вижу, что кто-то конспектирует. Что вы думаете?
👍5
Пока под рукой тетрадка с конспектами, хочется похвалиться как у нас в компании построен процесс адаптации новых сотрудников. Сейчас поймёте взаимосвязь :)

К сожалению, у многих компаний нет плана как обучать новых людей и понимая какую информацию давать. Сам проходил через подобное. Спрашиваешь: с чего начать, что почитать, куда и что посмотреть? Ой. Ну вот по коду можешь пока побродить. Ах да, у нас же поверхности в CAD-системе и нужно знать математику, связанную с ними – читай про NURBS. Сижу, читаю про NURBS (неоднородные рациональные B-сплайны для представления кривых и поверхностей). Конспектирую, что-то перевожу... На фотке как раз мои потуги осознать...

Далее в работе действительно была математика, но в основном пришлось вспоминать матрицы поворота и трансформации. С NURBS напрямую я не столкнулся ни разу! Так что экскурс в сплайны потренировал мозги, но абсолютно потом не пригодился. Это как раз тот случай, что нет процесса адаптации, подборки с чем знакомиться.

У нас в PVS-Studio есть план (чеклист) введения человека в должность, который создаёт HR для себя и руководителя. Там начиная от знакомства с пожарной безопасностью и оформления в отделе кадров, и закачивания решением по итогам испытательного срока. Человек порционно получает информацию в специальной рассылки из 10 писем: структура компании, что такое один-на-один и так далее.

Выдаётся методическое руководство – что и где почитать, какие записи докладов посмотреть. По итогам изучения разных разделов нужно ответить на список контрольных вопросов и обсудить ответы с лидом. У программистов есть продолжение в виде практического задания по знакомству с PVS-Studio, проверке проекта, написанию пробной статьи. Для человека, взятого, например, в маркетинг, появляется список первых практических задач, который заранее подготавливается руководителем.

Возможно, от всего этого пухнет голова, зато человек не чувствует себя "бросили в воду и плыви" и получает именно ту информацию, которая ему понадобится в работе.

Далее он будет развиваться на основании матрицы компетенции, но это уже другая отдельная большая тема.

P.S. Здорово, что получилось всё так организовать. Надо не забыть текстом с HR командой поделиться :) Думаю им приятно будет.
4👀1
Коллега профессионально набросил на тему, медленнее ли С++ std::array классических C массивов или нет. Читайте, изучайте графики, рассказывайте автору в комментариях почему он не прав и что не ту линейку прикладывал :)
👍2
Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям.
Мартин Фаулер (Martin Fowler)
3
Юбилейный баг. Он станет 16000-ым в коллекции багов, которую мы пополняем в процессе проверки открытых проектов для написания статей. Найден в проекте DPDK, про который я скоро напишу пару публикаций.

Ещё это значит, что благодаря нашей команде, в открытых проектах станет на 16000 ошибок меньше.

Сработала диагностика V523. Независимо от условия, выполняются одни и те-же действия. Скорее всего здесь есть опечатка. Ну или код просто избыточный.
🔥1
Что такое неведомый хтонические неописуемый ужас? Это структура bnx2x_softc в DPDK 😰
Please open Telegram to view this post
VIEW IN TELEGRAM