Top.Mail.Ru
Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
PVS-Studio 7.36: расширение поддержки M…

PVS-Studio 7.36: расширение поддержки MISRA, плагин для Qt Creator 16, расширение пользовательских аннотаций в C#

17 Апр 2025

Вышел новый релиз PVS-Studio — 7.36. Встречайте расширение поддержки MISRA, плагин для Qt Creator 16, расширение пользовательских аннотаций в C# и ещё много других обновлений! Больше подробностей в этой заметке.

Загрузить актуальную версию PVS-Studio можно здесь.

Выбор версии стандартов MISRA C и MISRA C++

В C и C++ анализаторе PVS-Studio была добавлена возможность задать версии стандартов MISRA C и MISRA C++. Выбрать используемую версию стандарта можно в настройках PVS-Studio плагина для Visual Studio.

Поддерживаемые версии стандартов: MISRA C 2012, MISRA C 2023, MISRA C++ 2008 и MISRA C++ 2023.

Расширение механизма пользовательских аннотаций в C#

В C# анализаторе был расширен механизм пользовательских аннотаций. До этого пользователи могли создавать аннотации только для taint-анализа.

В анализаторе существует ряд аннотаций для taint-анализа. С их помощью можно размечать источники и приёмники заражения. Также можно помечать методы/конструкторы, которые производят валидацию taint-данных. Таким образом, если taint-данные прошли валидацию, то при их попадании в приёмник анализатор не выдаст предупреждение.

Теперь появилась возможность с помощью пользовательских аннотаций указать анализатору информацию, которая необходима не только для taint-анализа. Например, можно указать, что метод может вернуть null, что возвращаемое значение метода нужно использовать или что аргумент метода не должен быть равен null, и ещё много чего.

Подробнее об этом можно прочитать в нашей документации.

Плагин PVS-Studio для Qt Creator 16

Плагин PVS-Studio теперь доступен для Qt Creator версий 16.x, а вот поддержка для версий Qt Creator 10.x прекращена. Мы стараемся обеспечивать обратную совместимость по поддержке последних версий плагинов для всех версий Qt Creator за два года с момента каждого релиза.

Подробнее об использовании PVS-Studio в Qt Creator можно узнать в нашей документации.

Доработки флагов файлов конфигурации

  • В кроссплатформенную утилиту для проверки C и C++ проектов pvs-studio-analyzer добавлен новый флаг ‑‑apply-pvs-configs.

С помощью него включается режим автоматического поиска и применения файлов конфигурации правил .pvsconfig для проверяемых исходных файлов. Поиск самих файлов конфигурации правил происходит в каталоге исходного файла и во всех родительских каталогах вплоть до корневой папки проекта, которая указывается с помощью нового флага ‑‑project-root.

Подробнее об этом можно прочитать в нашей документации.

  • Флаг ‑‑analysis-paths в утилите командной строки pvs-studio-analyzer получил новый режим isolate-settings.

Он позволяет изолировать настройки, назначаемые с помощью файлов конфигурации правил .pvsconfig внутри заданной директории. Настройки, лежащие в родительских для этой директории папках, в этом режиме игнорируются.

Подробнее об этом можно прочитать в нашей документации.

Также для этого режима были добавлены настройки для файла .pvsconfig: //V_ANALYSIS_PATHS isolate-settings и //V_ISOLATE_CURRENT_DIR. Подробнее об этом можно прочитать в соответствующем разделе документации.

Обновление документации

Была добавлена документация по использованию анализатора PVS-Studio в сервисе для хранения исходного кода GitFlic, а также в DevSecOps платформах Hexway и AppSec.Hub.

Breaking Changes

Эти изменения ломают обратную совместимость с предыдущими версиями анализатора. Из-за этого может потребоваться изменить способ использования анализатора.

  • При анализе C и C++ проектов на основе compile_commands.json в утилите командной строки pvs-studio-analyzer теперь игнорируются все вызовы не компиляторов. Для работы с компиляторами, имеющими нестандартные имена, которые не определяются PVS-Studio по умолчанию, можно использовать флаг ‑‑compiler. Подробнее об этом можно узнать в соответствующем разделе нашей документации.
  • Минимальная рекомендуемая версия macOS для запуска анализатора PVS-Studio на процессорах с архитектурой x86-64 — macOS Big Sur (11.1).

Полный список изменений вы сможете найти на странице истории версий PVS-Studio.

Новые диагностические правила

C, С++

  • V2634. MISRA. Features from <fenv.h> should not be used.
  • V2635. MISRA. The function with the 'system' name should not be used.
  • V2636. MISRA. The functions with the 'rand' and 'srand' name of <stdlib.h> should not be used.
  • V2637. MISRA. A 'noreturn' function should have 'void' return type.
  • V2638. MISRA. Generic association should list an appropriate type.
  • V2639. MISRA. Default association should appear as either the first or the last association of a generic selection.
  • V2640. MISRA. Thread objects, thread synchronization objects and thread-specific storage pointers should have appropriate storage duration.
  • V2641. MISRA. Types should be explicitly specified.
  • V2642. MISRA. The '_Atomic' specifier should not be applied to the incomplete type 'void'.
  • V2643. MISRA. All memory synchronization operation should be executed in sequentially consistent order.

C#

  • V3218. Cycle condition may be incorrect due to an off-by-one error.
  • V3219. The variable was changed after it was captured in a LINQ method with deferred execution. The original value will not be used when the method is executed.
  • V3220. The result of the LINQ method with deferred execution is never used. The method will not be executed.
  • V3221. Modifying a collection during its enumeration will lead to an exception.
  • V5629. OWASP. Code contains invisible characters that may alter its logic. Consider enabling the display of invisible characters in the code editor.

Java

  • V5320. OWASP. Use of potentially tainted data in configuration may lead to security issues.
  • V5321. OWASP. Possible LDAP injection. Potentially tainted data is used in a search filter.
  • V5322. OWASP. Possible reflection injection. Potentially tainted data is used to select class or method.
  • V5323. OWASP. Potentially tainted data is used to define 'Access-Control-Allow-Origin' header.
  • V5324. OWASP. Possible open redirect vulnerability. Potentially tainted data is used in the URL.
  • V5325. OWASP. Setting the value of the 'Access-Control-Allow-Origin' header to '*' is potentially insecure.
  • V5326. OWASP. OWASP. A password for a database connection should not be empty.
  • V5327. OWASP. Possible regex injection. Potentially tainted data is used to create regular expression.
  • V5328. OWASP. Using weak authorization checks could lead to security violations.
  • V5329. OWASP. Using unsafe methods of file creation is not recommended because an attacker might access the files.
  • V5330. OWASP. Possible XSS injection. Potentially tainted data might be used to execute a malicious script.

Статьи

Для тех, кто пишет на C++:

Для тех, кто пишет на C#:

Для тех, кто пишет на Java:

Статьи общей тематики:

Доклады

Модельные варианты ошибок в статических анализаторах

ГОСТ Р 71207, касающийся статического анализа кода, вводит термин "модельный вариант" ошибок. Дело в том, что невозможно в общем виде искать такие ошибки, как неопределенное поведение, разыменование нулевых указателей или опечатки. Но искать их нужно. Как же создатели анализаторов выходят из этой ситуации? Как раз с помощью понятия модельных вариантов ошибок (даже не зная, что они так называются), сводя поиск ошибки общего типа к задаче поиска ошибок множества подтипов.

Андрей Карпов предлагает заглянуть внутрь PVS-Studio и посмотреть, как происходит поиск ошибок, несмотря на технологические ограничения методологии статического анализа.

Посмотреть можно тут:

C++ и неопределённое поведение

Мы пригласили в гости Дмитрия Свиридкина — создателя книги "Путеводитель C++ программиста по неопределённому поведению". Обсудили грани, отделяющие корректный C++ код от некорректного, попросили рассказать историю написания книги, поговорили о развитии языка и его будущем.

Посмотреть можно тут:

SAST как Quality Gate

Использование SAST в качестве Quality Gate — это не просто тренд, а необходимость для современных разработчиков, стремящихся создавать надёжные и безопасные приложения. Рассказали, как внедрение этих практик может значительно повысить уровень вашего проекта.

Посмотреть можно тут:

Внедрение процессов безопасной разработки. Интеграция PVS-Studio и SGRC SECURITM

Совместно с экспертом SECURITM Евгенией Карповой мы поговорили о том, как обеспечить соблюдение требований ГОСТ в области безопасной разработки программного обеспечения.

Показали реальные примеры использования PVS-Studio и SECURITM, дали рекомендации по настройке инструментов и рассказали, как оптимизировать процессы разработки для достижения высокого уровня безопасности.

Посмотреть можно тут:

ГОСТ Р 71207–2024. Безопасная разработка и статический анализ

Использование статических анализаторов кода является одним из условий разработки безопасного ПО.

Но возникали вопросы: какие инструменты выбрать? что они должны уметь? как "правильно" проводить анализ и организовать процесс?

С ответами поможет новый ГОСТ, вышедший в апреле 2024 года — ГОСТ Р 71207-2024: "Статический анализ программного обеспечения".

В докладе рассмотрели самые важные темы ГОСТа, его актуальность, новые требования, подходы к анализу и многое другое.

Посмотреть можно тут:

Ищем ошибки в начале, в середине и в конце разработки

В докладе подняли тему поиска ошибок, качества кода и безопасной разработки.

Поговорили о технологиях статического анализа и SAST-инструментах как способах поиска потенциальных ошибок и уязвимостей на ранних этапах разработки и всем цикле разработки ПО. Разобрали особенности этих инструментов, как они работают, а также кому это может пригодиться и как подобрать инструмент.

Посмотреть можно тут:

Как статический анализ дополняет тестирование продукта

Разберем тему использования статического анализа в связке с тестированием. Как он работает на реальных примерах, какие примеры решает, а также как может помочь оптимизировать код проекта. Немного заглянем в сторону безопасности, уязвимостей и стандартов.

А еще пару лайфхаков при использовании инструмента.

Как искать ошибки и уязвимости во время разработки

Многие слышали и о статических анализаторах, и о SAST-инструментах, но в чём же реально их польза? Ну, во-первых, они могут выявить потенциальные ошибки и уязвимости на ранних этапах разработки и всём цикле ПО, но как это проверить? Рассказали в докладе.

Посмотреть можно тут:

Роли в IT: Developer Advocate

Как говорил современный тимлид: "Понапишут свой код, а потом адвокатов ищут". Кто такой Developer Advocate и чем он отличает от DevRel и маркетолога? Как сделать так, чтобы тебе платили деньги за то, что ты не пишешь код? Какие перспективы есть у человека на этой должности? Узнаете в этом выпуске.

Посмотреть можно тут:

Хотите проверить свой проект с помощью PVS-Studio? Начните с этой страницы.

Если вы хотите получать новости о новых релизах, можете подписаться на рассылку от команды PVS-Studio по ссылке.

Последние статьи:

Опрос:

Вы уже пользуетесь PVS-Studio?

Дарим
электронную книгу
за подписку!

book terrible tips
Популярные статьи по теме

Подписаться

Комментарии (0)

close comment form
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Я хочу принять участие в тестировании
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам