Последний релиз в уходящем 2021 году закрывает сразу несколько важных задач, поставленных перед командой PVS-Studio. Добавлена поддержка Visual Studio 2022, платформы .NET 6 и C# 10.0. Для стандарта MISRA C реализованы все диагностики категории Mandatory.
Поддержка Visual Studio 2022
В PVS-Studio добавлена поддержка Visual Studio 2022. Анализатор можно использовать для проверки кода C++ и C# проектов. Поддерживаются проекты, использующие новые версии стандартных C++ и .NET библиотек.
С точки зрения пользователя, не произошло никаких серьёзных изменений в интерфейсе анализатора и в принципах работы с ним. Да, нам теперь стоит написать обновлённый вариант статьи 2019 года "PVS-Studio для Visual Studio", но в целом приведённые в ней описания актуальны.
Поддержка .NET 6 и C# 10.0
В C# анализаторе PVS-Studio добавлена поддержка платформы .NET 6 для Windows, Linux и macOS, а также новой версии языка: C# 10.0. Кроме того, сам C# анализатор под Linux и macOS теперь работает под .NET 6.
Пользуясь случаем, предлагаем вашему вниманию статью "Обзор нововведений в C# 10".
MISRA C
В PVS-Studio на 80% поддержан стандарт обеспечения безопасности и надёжности MISRA C. При этом полностью покрыта категория предупреждений Mandatory, а также большая часть категории Required.
См. также:
- Что такое MISRA и как её готовить;
- Зачем нужен отчёт MISRA Compliance и как его получить в PVS-Studio?
- Классификация предупреждений PVS-Studio согласно стандартам: MISRA C, MISRA C++.
Различные улучшения
Механизм отключения выдачи предупреждений на существующем коде (baseline разметка, подавление предупреждений) дополнен для работы с Unreal Engine проектами. В данном релизе baseline механизм можно использовать для UE проектов в версии анализатора PVS-Studio для командной строки. В следующей версии PVS-Studio также будет расширена поддержка подавления предупреждений при работе с UE проектами напрямую из сред разработки Visual Studio и JetBrains Rider.
Примечание. Вы можете подробнее ознакомиться с идеологией отключения предупреждений на существующем коде в статье "Как внедрить статический анализатор кода в legacy проект и не демотивировать команду".
Появился новый раздел документации, в котором описано использование PVS-Studio для проверки проектов, позволяющих сгенерировать описание сборочного процесса в формате JSON Compilation Database. Данный метод подходит для проектов на основе CMake, QBS, Ninja и т.п.
В плагинах PVS-Studio для JetBrains IDEA, Rider и CLion добавлена возможность переназначения shortcut'ов для наиболее часто используемых действий по проверке проектов и работе с результатами анализа.
Новые диагностики
- V833. Using 'std::move' function with const object disables move semantics.
- V1076. Code contains invisible characters that may alter its logic. Consider enabling the display of invisible characters in the code editor.
- V2615. MISRA. A compatible declaration should be visible when an object or function with external linkage is defined.
- V2616. MISRA. All conditional inclusion preprocessor directives should reside in the same file as the conditional inclusion directive to which they are related.
- V2617. MISRA. Object should not be assigned or copied to an overlapping object.
- V2618. MISRA. Identifiers declared in the same scope and name space should be distinct.
- V2619. MISRA. Typedef names should be unique across all name spaces.
- V2620. MISRA. Value of a composite expression should not be cast to a different essential type category or a wider essential type.
- V2621. MISRA. Tag names should be unique across all name spaces.
- V2622. MISRA. External object or function should be declared once in one and only one file.
- V5616. OWASP. Possible command injection. Potentially tainted data is used to create OS command.
Некоторые свежие публикации в нашем блоге
- Развитие инструментария С++ программистов: статические анализаторы кода.
- Как один разработчик PVS-Studio защищал баг в проверяемом проекте.
- Слава баг-репортам, или как мы сократили время анализа проекта пользователя с 80 до 4 часов.
- Прокачка статического анализа проектов на Unreal Engine 4 и проверка автосимулятора Carla.
- Разнообразие ошибок в C# коде на примере CMS DotNetNuke: 40 вопросов к качеству.
- Спасибо, Марио, но код стоит поправить – проверка TheXTech.
- OWASP Top Ten и Software Composition Analysis (SCA).
- Вызов виртуальных функций в конструкторах и деструкторах (C++).
Обратная связь
Спасибо за внимание и интерес к нашему продукту. Если у вас есть вопросы или пожелания, мы всегда готовы пообщаться с вами. Также мы будем рады вашим отзывам по новым функциям, реализованным в анализаторе.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Andrey Karpov. PVS-Studio 7.16, expanding the horizons: MISRA C, Visual Studio 2022, .NET 6.