Мы иногда во внутреннем чате обмениваемся фрагментами кода с неочевидными ошибками, которые обнаруживаются с помощью PVS-Studio в каком-нибудь открытом проекте. Мол, кто быстро сообразит, что не так с кодом?
Вчера коллега поделился вот таким фрагментом кода из проекта SereneDB:
Признаюсь честно, я два раза прочитал этот фрагмент, но так и не увидел ошибку. И засчитал себе поражение. Раз так, думаю, это достойно публикации в канал, чтобы и вы могли испытать свою внимательность :)
Ответ:
Анализатор PVS-Studio выдаёт предупреждение V591 Non-void function should return a value. parameters.h 222
На первый взгляд предупреждение странное и смахивает на ложное срабатывание, ведь не может быть, что функция закончила работу, не вернув значение с помощью оператора . Если выбирается ветка , то там , и код просто не должен скомпилироваться. Во всех остальных случаях есть .
Но есть нюанс!
Ещё раз посмотрите на эту строчку:
static_assert используется неправильно: пропущен . Вернее, строковый литерал неявно конвертируется в значение , и никогда не прервёт компиляцию. В итоге else-ветка функции ничего не возвращает, и её поведение будет не определено для всех специализаций , кроме указанных ранее в цепочке .
Правильный вариант:
Вчера коллега поделился вот таким фрагментом кода из проекта SereneDB:
template <typename T>
struct NumericParameter : public Parameter {
using ValueType = T;
....
std::string name() const override {
if constexpr (std::is_same_v<ValueType, int16_t>) {
return "int16";
} else if constexpr (std::is_same_v<ValueType, uint16_t>) {
return "uint16";
} else if constexpr (std::is_same_v<ValueType, int32_t>) {
return "int32";
} else if constexpr (std::is_same_v<ValueType, uint32_t>) {
return "uint32";
} else if constexpr (std::is_same_v<ValueType, int64_t>) {
return "int64";
} else if constexpr (std::is_same_v<ValueType, uint64_t>) {
return "uint64";
} else if constexpr (std::is_same_v<ValueType, size_t>) {
return "size";
} else if constexpr (std::is_same_v<ValueType, double>) {
return "double";
} else {
static_assert("unsupported ValueType");
}
}
....
};
Признаюсь честно, я два раза прочитал этот фрагмент, но так и не увидел ошибку. И засчитал себе поражение. Раз так, думаю, это достойно публикации в канал, чтобы и вы могли испытать свою внимательность :)
Ответ:
На первый взгляд предупреждение странное и смахивает на ложное срабатывание, ведь не может быть, что функция закончила работу, не вернув значение с помощью оператора
returnelsestatic_assertreturn "что-то";Но есть нюанс!
Ещё раз посмотрите на эту строчку:
static_assert("unsupported ValueType");bool-constexprtruestatic_assertNumericParameterif constexprПравильный вариант:
static_assert(false, "unsupported ValueType");
🔥26❤1
Продолжаем цикл вебинаров по РБПО. Хотя скорее уже заканчиваем, так как осталось рассмотреть два процесса. Дополнительно будет пара бонусных вебинаров, но всё равно марафон подходит к завершению.
Сегодня 21.01 в 16:00 ждём вас на "Процесс 24. Поиск уязвимостей в программном обеспечении при эксплуатации". Смотреть записи прошедших вебинаров и участвовать в новых.
P.S. Скоро возобновляем встречи клуба С++ программистов в Москве "Сплошные плюсы". Приглашаем докладчиков. Контакт для тех кто хочет что-то рассказать на тему C++: Волкова Дарья - Telegram: @daryavolkovaa
Сегодня 21.01 в 16:00 ждём вас на "Процесс 24. Поиск уязвимостей в программном обеспечении при эксплуатации". Смотреть записи прошедших вебинаров и участвовать в новых.
P.S. Скоро возобновляем встречи клуба С++ программистов в Москве "Сплошные плюсы". Приглашаем докладчиков. Контакт для тех кто хочет что-то рассказать на тему C++: Волкова Дарья - Telegram: @daryavolkovaa
🔥7👍3
Обновлённое подробное описание PVS-Studio на начало 2026 года с точки зрения
• ГОСТ Р 71207—2024 — Статический анализ программного обеспечения,
• ГОСТ Р 56939—2024 — РБПО,
• приказа ФСТЭК №117,
• и т.д.
P.S. Команда PVS-Studio будет со стендом на ТБ Форум 2026 (18—20 февраля 2026, МВЦ "Крокус Экспо", павильон 2, зал 10). Я там тоже буду. Приходите задавать вопросы на тему публикации, стандартов и вообще.
• ГОСТ Р 71207—2024 — Статический анализ программного обеспечения,
• ГОСТ Р 56939—2024 — РБПО,
• приказа ФСТЭК №117,
• и т.д.
P.S. Команда PVS-Studio будет со стендом на ТБ Форум 2026 (18—20 февраля 2026, МВЦ "Крокус Экспо", павильон 2, зал 10). Я там тоже буду. Приходите задавать вопросы на тему публикации, стандартов и вообще.
PVS-Studio
Статический анализатор кода PVS-Studio в 2026: ГОСТ Р 71207, ГОСТ Р 56939, приказ ФСТЭК №117
Инструментальное средство PVS-Studio разрабатывается с учётом требований, предъявляемых к статическим анализаторам в ГОСТ Р 71207—2024. Выявляет критические ошибки и может использоваться при...
🔥7
Бестиарий программирования pinned «Обновлённое подробное описание PVS-Studio на начало 2026 года с точки зрения • ГОСТ Р 71207—2024 — Статический анализ программного обеспечения, • ГОСТ Р 56939—2024 — РБПО, • приказа ФСТЭК №117, • и т.д. P.S. Команда PVS-Studio будет со стендом на ТБ Форум…»
Буду рад присланным идеям диагностических правил статического анализатора для языков Go, JavaScript, TypeScript. Такие ошибки, как деления на 0, не интересны. С ними и так всё понятно. Интересны разновидности опечаток (в духе забытого throw), паттерны неправильного использования функций и т.п. Заранее спасибо.
Даже немного не верится, но мы добрались до двух последних процессов ГОСТ Р 56939-2024!
Записи вебинаров:
Вебинар 24. Поиск уязвимостей в программном обеспечении при эксплуатации
Вебинар 25. Обеспечение безопасности при выводе программного обеспечения из эксплуатации
Другие записи можно найти на странице "Вокруг РБПО за 25 вебинаров: ГОСТ Р 56939-2024".
Однако, нам сложно остановиться :) Поэтому вас ждёт ещё несколько дополнительных встреч. Уже запланировано:
• 04.02.2026 в 16:00 по МСК - Безопасность frontend-приложений: особенности, угрозы и анализаторы класса FAST (Frontend Application Security Testing)
• 11.02.2026 в 16:00 по МСК - PVS-Studio Atlas — новая платформа контроля качества кода
Записи вебинаров:
Вебинар 24. Поиск уязвимостей в программном обеспечении при эксплуатации
Вебинар 25. Обеспечение безопасности при выводе программного обеспечения из эксплуатации
Другие записи можно найти на странице "Вокруг РБПО за 25 вебинаров: ГОСТ Р 56939-2024".
Однако, нам сложно остановиться :) Поэтому вас ждёт ещё несколько дополнительных встреч. Уже запланировано:
• 04.02.2026 в 16:00 по МСК - Безопасность frontend-приложений: особенности, угрозы и анализаторы класса FAST (Frontend Application Security Testing)
• 11.02.2026 в 16:00 по МСК - PVS-Studio Atlas — новая платформа контроля качества кода
👍13
Если хотите дополнительно послушать про выравнивания данных и пообщаться с автором приведённых ранее статей, то приходите 19 февраля в кампус ЦУ на встречу клуба "Сплошные плюсы".
Приглашаю зарегистрироваться на митап от Центрального университета и PVS-Studio. г. Москва, ул. Гашека, 7, стр. 1. Начало в 18:30.
Доклады:
1. Тихий враг или молчаливый союзник: Коротко о выравнивании в C++
2. Разработка решения для расчета метрик графа в Single Node
Приглашаю зарегистрироваться на митап от Центрального университета и PVS-Studio. г. Москва, ул. Гашека, 7, стр. 1. Начало в 18:30.
Доклады:
1. Тихий враг или молчаливый союзник: Коротко о выравнивании в C++
2. Разработка решения для расчета метрик графа в Single Node
cu.ru
Сплошные плюсы. Клуб С++ разработчиков
Митап от Центрального университета и PVS-Studio
🔥4❤1
Компания FuncSafety, с которой мы делали совместный вебинар, запустила канал, посвященный Функциональной Безопасности: https://xn--r1a.website/funcsafety
Telegram
Функциональная безопасность: практика и аудит
Экспертный канал по функциональной безопасности. Реальный опыт TÜV, IEC 61508, ISO 26262, IEC 61784-3, ISO 13849-1, IEC 62061.
Разборы кейсов, типовые ошибки, практика сертификации и аудита. Канал ведёт компания «FUNCSAFETY» https://func-safety.ru.
Разборы кейсов, типовые ошибки, практика сертификации и аудита. Канал ведёт компания «FUNCSAFETY» https://func-safety.ru.
👍4
СВД Встраиваемые Системы приглашает 13 февраля / 12.00 на экспертный вебинар по разработке ПО с требованиями функциональной безопасности — без мистики, только проверенные методологии, стандарты и практика.
P.S. Мы сотрудничаем c СВД Встраиваемые Системы и благодарны им за отзыв, оставленный в конце 2025 года.
P.S. Мы сотрудничаем c СВД Встраиваемые Системы и благодарны им за отзыв, оставленный в конце 2025 года.
Telegram
СВД ВС
Пятница, 13-е. День, когда особенно важно, чтобы ПО было… безопасным 😈
13 февраля, в 12.00 приглашаем на экспертный вебинар по разработке ПО с требованиями функциональной безопасности — без мистики, только проверенные методологии, стандарты и практика.
…
13 февраля, в 12.00 приглашаем на экспертный вебинар по разработке ПО с требованиями функциональной безопасности — без мистики, только проверенные методологии, стандарты и практика.
…
👍6
Выражаем благодарность команде отдела сертификационных испытаний АО Центр «Атомзащитаинформ». Отдел провёл испытания статического анализатора кода PVS-Studio и составил краткое ревью. Лаборатория считает целесообразным рассматривать PVS-Studio как SAST-средство, пригодное для встраивания в цикл разработки для выявления опечаток, логических ошибок, мёртвого кода и потенциальных уязвимостей. В частном порядке вы можете ознакомиться с отзывом, написав нам в поддержку.
Из недостатков отмечено ограничение по языкам. На данный момент продукт поддерживает только C, C++, C#, Java. Однако, забегая вперёд, могу сказать, что уже ведётся разработка по поддержке JavaScript, TypeScript и Go. Весной мы планируем организовать программу раннего доступа (EAP).
Из недостатков отмечено ограничение по языкам. На данный момент продукт поддерживает только C, C++, C#, Java. Однако, забегая вперёд, могу сказать, что уже ведётся разработка по поддержке JavaScript, TypeScript и Go. Весной мы планируем организовать программу раннего доступа (EAP).
🔥12
Большой брат, биг-дата, ИИ...
Месяц звонки из "Яндекс для Бизнеса" (на телефоне распознается). Обычно не отвечаем, а сегодня ответили, чтобы отстали уже.
Хотели предложить для нашей компании Яндекс.Такси. Которым мы пользуемся сто лет.
Вот такая вот подготовительная работа и анализ потенциальный клиентов...
Месяц звонки из "Яндекс для Бизнеса" (на телефоне распознается). Обычно не отвечаем, а сегодня ответили, чтобы отстали уже.
Хотели предложить для нашей компании Яндекс.Такси. Которым мы пользуемся сто лет.
Вот такая вот подготовительная работа и анализ потенциальный клиентов...
😁9
Первые опечатки, которые нашёл PVS-Studio в проектах на языке Go 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
PVS-Studio
Go vet не поможет. Статический анализ Golang проектов с помощью PVS-Studio
На нем написан Docker, Kubernetes, Gitea и многие другие проекты самых разных масштабов. Наверное, вы догадались, что речь идёт о Go. Мы никогда не писали об ошибки на Golang-проектах, но настало...
🔥7
В ходе бонусного вебинара команда PVS-Studio представила новый продукт — PVS-Studio Atlas, предназначенный для работы с результатами анализа кода: просмотра, аналитики, разметки и формирования отчётов для сертификационных лабораторий и ФСТЭК.
P.S. Тестировании Atlas Viewer доступно на странице PVS-Studio Beta.
P.S. Тестировании Atlas Viewer доступно на странице PVS-Studio Beta.
🔥7👍4👌1
Следующая неделя будет активной. Где, кто и что:
Вебинар №1
В понедельник 16 февраля в 16:00 я проведу вебинар: Статический анализ кода в методическом документе ЦБ РФ "Профиль защиты". Регистрация.
В конце 2025 года ЦБ РФ разослал в информационном письме новый методический документом "Профиль защиты прикладного программного обеспечения автоматизированных систем и приложений кредитных организаций и некредитных финансовых организаций". Документ был обновлён с учётом ГОСТ Р 56939-2024. Для меня интересным является обновление разделов, посвящённых статическому анализу кода. Эти изменения и рассмотрим.
Вебинар №2
28-м вебинаром "Системы с конструктивной информационной безопасностью" мы (кажется:) завершаем цикл "Вокруг РБПО за 25 вебинаров: ГОСТ Р 56939-2024" :)) Начало как обычно в среду 18.02.2026 в 16:00. Регистрация.
ТБ-Форум
18—20 февраля мы будем со стендом на ТБ Форум 2026. Приходите общаться и задавать вопросы.
Клуб С++ разработчиков
19 февраля 2026 в 18:30 в Кампусе ЦУ пройдёт очередная встреча Клуба С++ разработчиков. Регистрация.
Вебинар №1
В понедельник 16 февраля в 16:00 я проведу вебинар: Статический анализ кода в методическом документе ЦБ РФ "Профиль защиты". Регистрация.
В конце 2025 года ЦБ РФ разослал в информационном письме новый методический документом "Профиль защиты прикладного программного обеспечения автоматизированных систем и приложений кредитных организаций и некредитных финансовых организаций". Документ был обновлён с учётом ГОСТ Р 56939-2024. Для меня интересным является обновление разделов, посвящённых статическому анализу кода. Эти изменения и рассмотрим.
Вебинар №2
28-м вебинаром "Системы с конструктивной информационной безопасностью" мы (кажется:) завершаем цикл "Вокруг РБПО за 25 вебинаров: ГОСТ Р 56939-2024" :)) Начало как обычно в среду 18.02.2026 в 16:00. Регистрация.
ТБ-Форум
18—20 февраля мы будем со стендом на ТБ Форум 2026. Приходите общаться и задавать вопросы.
Клуб С++ разработчиков
19 февраля 2026 в 18:30 в Кампусе ЦУ пройдёт очередная встреча Клуба С++ разработчиков. Регистрация.
🔥4⚡1
Разбираем изменения в OWASP Top 10 версии 2025 года на примерах и рассматриваем, как SAST может помочь избежать уязвимостей.
PVS-Studio
OWASP Top 10 2025 — от кода к цепочке поставок: расширение границ безопасности
Разбираем изменения в OWASP Top 10 версии 2025 года на примерах и рассматриваем, как SAST может помочь избежать уязвимостей.
Только ленивый не писал и не обсуждал недавнюю новость, что оркестр из агентов Opus’а написал компилятор для C. Ссылка №1, №2, №3. Мне близка вот эта мысль:
И у меня есть к ней продолжение! Пока люди почему-то радуются, как легко создавать код, которые некому станет поддерживать, мы будем хранить знания и развивать сообщество экспертов. Вот наш вклад в это: Давайте создадим язык программирования.
10 бесплатных уроков, около 6 часов видео. В формате лайвкодинга Юрий Минаев (архитектор в компании PVS-Studio) показывает весь процесс разработки на C++ выдуманного языка программирования. Вы разберётесь, что такое язык и как формально описать его так, чтобы машина могла его понимать. Шаг за шагом вы реализуете лексер, вспомните основы грамматики и метод рекурсивного спуска, добавите в язык переменные и функции, научитесь вызывать их и корректно определять тип возвращаемого значения. Финальной частью станет написание собственного эвалюатора.
... Но как по мне теперь только больше возрастает необходимость людей, которые "проклятую реальность" понимают, чтобы всякие странные штуки фиксить и/или объяснять, как фиксить, а для этого нужен опыт.
И у меня есть к ней продолжение! Пока люди почему-то радуются, как легко создавать код, которые некому станет поддерживать, мы будем хранить знания и развивать сообщество экспертов. Вот наш вклад в это: Давайте создадим язык программирования.
10 бесплатных уроков, около 6 часов видео. В формате лайвкодинга Юрий Минаев (архитектор в компании PVS-Studio) показывает весь процесс разработки на C++ выдуманного языка программирования. Вы разберётесь, что такое язык и как формально описать его так, чтобы машина могла его понимать. Шаг за шагом вы реализуете лексер, вспомните основы грамматики и метод рекурсивного спуска, добавите в язык переменные и функции, научитесь вызывать их и корректно определять тип возвращаемого значения. Финальной частью станет написание собственного эвалюатора.
🔥8
Запись вебинара: Статический анализ кода в методическом документе ЦБ РФ "Профиль защиты".
Описание. Методический документ "Профиль защиты (ПЗ) прикладного ПО автоматизированных систем и приложений кредитных организаций и некредитных финансовых организаций", опубликованный в декабре 2025 года, уточнил и расширил многие меры, направленные на разработку безопасных программных продуктов. Например, перечислены требования, предъявляемые к инструментальным средствам статического анализа кода. В ходе вебинара рассмотрели эти новые требования, а также причины, по которым полезно изучить ГОСТ Р 56939—2024 и ГОСТ Р 71207—2024 при реализации требований безопасности, изложенных в ПЗ.
Примечание. По окончании вебинара был задан вопрос о сертификации средств статического анализа. В качестве ответа уместно привести цитату из статьи "Итоги этапа «Домашнее задание» испытаний статических анализаторов под патронажем ФСТЭК России":
Описание. Методический документ "Профиль защиты (ПЗ) прикладного ПО автоматизированных систем и приложений кредитных организаций и некредитных финансовых организаций", опубликованный в декабре 2025 года, уточнил и расширил многие меры, направленные на разработку безопасных программных продуктов. Например, перечислены требования, предъявляемые к инструментальным средствам статического анализа кода. В ходе вебинара рассмотрели эти новые требования, а также причины, по которым полезно изучить ГОСТ Р 56939—2024 и ГОСТ Р 71207—2024 при реализации требований безопасности, изложенных в ПЗ.
Примечание. По окончании вебинара был задан вопрос о сертификации средств статического анализа. В качестве ответа уместно привести цитату из статьи "Итоги этапа «Домашнее задание» испытаний статических анализаторов под патронажем ФСТЭК России":
Важно отметить, что в настоящий момент ФСТЭК России не предъявляет каких-либо специальных требований к инструментам статического анализа, на соответствие которым возможно проводить сертификационные испытания инструментов. Как следствие, любые требования заказчиком наличия сертификата ФСТЭК России на инструмент статического анализа являются его частной инициативой (подробнее — в эфире канала AMLive, выпуск «Как встроить безопасность в процесс разработки ПО: практика, ошибки, решения»).
🔥2