Наша команда регулярно публикует теоретические статьи, пишет про поиск ошибок в открытых проектах, делает развлекательные посты. В общем, в нашем блоге много всего интересного и полезного. Однако не ходим ли мы по кругу с одними и теми же темами? Нам сложно взглянуть на нашу ленту публикаций со стороны. Приглашаем поделиться идеями, какие статьи хотелось бы видеть от нашей команды.
На данный момент контент нашего блога можно разделить на 4 основные категории:
- Теоретические статьи;
- Информационно-развлекательные статьи;
- Проверка открытых проектов;
- Всё остальное.
Деление весьма условное. Одна и та же публикация одновременно может быть развлекательной и теоретической. Пример: мини-книга "60 антипаттернов для С++ программиста".
Раз уж речь зашла про мини-книгу. Я переработал её в полноценное бумажное издание. Книга не продаётся, но её можно выиграть на различных конференциях, в которых мы участвуем, или подписавшись на ежемесячный дайджест лучших статей. В течение 14 месяцев мы разыграем 42 книги среди наших подписчиков дайджеста. Подписывайтесь.
Заодно не пропустите интересные статьи. Вдруг мы как раз на предложенную вами тему напишем :)
Вкратце пройдёмся по названным категориям, чтобы вы составили о них впечатление и, возможно, открыли для себя что-то интересное.
Теоретические статьи
Теоретические статьи в основном связаны с языками программирования C, C++, C#, Java. Это неудивительно, поскольку мы сейчас разрабатываем анализатор кода PVS-Studio для поиска ошибок в коде программ именно на этих языках.
- Обзор нововведений в C# 12
- Распространённые паттерны опечаток при программировании
- Всегда ли в C# есть упаковка при конкатенации со строкой и интерполяции?
- Уязвимость XSS в приложении ASP.NET: разбираем CVE-2023-24322 в CMS mojoPortal
- Под капотом SAST: как инструменты анализа кода ищут дефекты безопасности
- Помоги компилятору, и он поможет тебе. Тонкости работы с nullable reference типами в C#
- Вызов виртуальных функций в конструкторах и деструкторах (C++)
Информационно-развлекательные статьи
Часть развлекательных статей связана с найденными нами багами. Однако ошибки в них рассматриваются скорее как объекты коллекционирования или раритеты.
- Ква! Как писали код во времена Quake
- Интервью с разработчиками мультитула для хакеров и пентестеров Flipper Zero
- Reddit для программистов
- Обзор Top-3 Open Source игр на C# и ошибок в их коде
- Новогодние праздники вместе с PVS–Studio
- Игра: найди ошибку в C++ коде
- Самые интересные блоги и сайты для C++ программистов
Проверка открытых проектов
С целью популяризации методологии статического анализа кода мы много лет пишем статьи про проверку различных открытых проектов. Нет ничего лучше, чем на практике показать, как анализатор находит баги.
Сразу сделаю оговорку, что это неправильный способ использования анализатора. Его следует применять регулярно и исправлять ошибки на этапе разработки. Чем раньше ошибка обнаружена, тем дешевле её исправление. Мы же делаем разовые проверки проектов и наша цель – показать возможности анализаторов на примере PVS-Studio. Это хороший способ популяризации анализаторов кода, но разовые действия не способствуют повышению качества процесса разработки.
Некоторые из публикаций по этой теме:
- FreeCAD и C++ код с неопределённым поведением для медитации.
- Опечатки, нулевые указатели и коварный таб: 33 фрагмента в библиотеке GTK.
- Проверка компилятора GCC 13 с помощью PVS-Studio.
- Герои Кода и Магии: анализ игрового движка VCMI.
- Изучаем подозрительные места в коде AWS SDK для .NET.
- ONLYOFFICE Community Server: как баги способствуют возникновению проблем с безопасностью
- Проверка JavaScript-движка Rhino, или как встретились единорог с носорогом
Всё остальное
В основном это статьи, непосредственно связанные с анализатором PVS-Studio и его разработкой. Однако можно встретить и весьма отвлечённые темы.
- Сказ о том, как в PVS-Studio бага обновляли
- DefectDojo и PVS-Studio: отслеживаем ошибки и уязвимости.
- Топ-10 докладов на С# конференциях 2019-2022 года.
- Хорошо ли ChatGPT ищет ошибки в коде?
- 1000 глаз, которые не хотят проверять код открытых проектов
- Wave Function Collapse для процедурной генерации в Unity
- Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio
А что хочется почитать тебе?
Это то, что сейчас у нас есть. Чего не хватает? Статьи на какие программистские темы хочется почитать в нашем блоге?
Прошу набрасывать в комментариях идеи для статей. Желательно связанные с языками C++, C#, Java. Открытые проекты для проверки тоже можно предлагать. Заранее спасибо!
The Show Must Go On!
Комментарии (11)
AntonSurikov
21.11.2023 09:50+2Спасибо! Хорошее дело делаете!
Andrey2008 Автор
21.11.2023 09:50+1Спасибо. Приятно слышать положительные отзывы о наших статьях в комментариях или на конференциях.
Sazonov
21.11.2023 09:50+2Как донести [не техническому] руководству преимущества хотя бы минимального архитектурного планирования и следования стандартам разработки? Какие метрики можно подготовить? Как объяснить что цена доработки фичей или багфикса растёт экспоненциально?
Я понимаю, что эти вопросы не имеют универсального ответа, но возможно есть какие-то интересные кейсы.
Robastik
21.11.2023 09:50Мне было бы интересно про реализацию службы windows на с#.
Sazonov
21.11.2023 09:50А в чём проблема? Навалом документации же.
Robastik
21.11.2023 09:50Нет проблемы. Есть интерес.
Кейс такой:
Excel хостит COM (MSScriptСontrol), в котором исполняется скрипт. Скрипт общается с Excel через COM Excel. Скрипт должен работать сутками. Скрипт управляется и мониторится из меню Excel.
Для удобства и стабильности нужно перевести MSScriptСontrol на хостинг в службе и сохранить для юзера управление ч/з меню Excel.
Я далек от с# и реализация такой службы для меня не очевидна.
viordash
21.11.2023 09:50+2Истории из жизни по интеграции pvs в билд-систему.
Какой подход был реализован в плане обработки сообщений от pvs? Например сообщения интерпретировать как ошибки и для начала большинство сообщений подавили, и по мере правки кода расширяли разрешенных. Или просто интерпретировать как предупреждения.
Einherjar
Статьи сгенерированные из вывода N сообщений статического анализатора натравленного на какойто проект имхо скучные и друг от друга ничем не отличаются. Их можно генерировать без участия человека с помощью чатгпт и написать об этом статью. А все остальные прекрасны.
datacompboy
Скорее эти статьи одно-двухразовые. Первые было интересно, потом читал "как быстро я найду ошибку сам", потом просто пролистывал "а вдруг за что глаз зацепится". То есть те, кто еще их не видел -- даже с интересом прочтут.
А так, хотелось бы больше жЫру про внутренности логики. Какие фишки для паттерн матчинга деревьев взяли? Как сохранили выравнивание в AST но не набрали сложности в матчинге? Как поддерживаете скорость работы для действительно сложных случаев?
И прочие вещи, которые очевидны пока за них не берёшься, потом кажутся невозможными, но ты их все равно делаешь и тогда понимаешь что они были не очевидны -- но разгрызаемы. Вот такое я люблю!
Andrey2008 Автор
Согласен: у таких статей есть проблема однообразия. Мы стараемся как-то обыгрывать ошибки, экспериментируем с подачей материала и так далее. Но не всегда получается. С другой стороны, такие регулярные статьи про проверку проектов всё равно нужны.
Они вновь и вновь демонстрируют пользу анализаторов кода. Иначе возникнет ощущение, что проблема багов решена и тема анализаторов не актуальна. Мол компиляторы/среды разработки/AI-тулы и так всё уже находят. Или программисты наконец научились писать без ошибок :). Можно расслабиться :).
На самом деле ничего не меняется. По-прежнему нужны продвинутые инструменты анализа кода, дополняющие другие методологии борьбы с ошибками (обзоры кода, динамический анализ, юнит-тесты и так далее). Способ убедительно это продемонстрировать – найти ошибки в проекте. Поэтому писали, пишем и будем писать про найденные баги :)