категории | RSS

PVS-Studio 7.28: поддержка ARM, .NET 8, анализ Unreal Engine без Unity Build и не только

Вышел новый релиз PVS-Studio — 7.28. Теперь можно запускать анализ на архитектуре ARM, .NET 8 и в Unreal Engine без Unity Build, и это ещё не всё! Больше подробностей в этом пресс-релизе.

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

Поддержка архитектуры ARM

В анализатор PVS-Studio добавлена поддержка работы на платформе ARM на операционной системе Windows. Поддержка работает в режиме совместимости с архитектурой x64.

В следующем году планируется реализация нативной ARM версии анализатора для операционных систем семейства macOS.

Поддержка анализа проектов на .NET 8

В PVS-Studio C# поддержали анализ проектов, использующих .NET 8.

Сам C# анализатор под Linux и macOS теперь работает на .NET 8.

Анализ Unreal Engine проектов без Unity Build

При проверке Unreal Engine проектов с помощью PVS-Studio зачастую возникают проблемы с избыточным потреблением памяти и замедлением анализа, вызываемые использованием системы объединения единиц трансляции в один файл (Unity Build).

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

Мы дополнили документацию по анализу Unreal Engine проектов пунктом про настройку запуска анализа без использования Unity Build, но с возможностью использования этого режима для сборки проекта.

Поддержка относительных путей в SARIF

Отчеты в формате SARIF получили поддержку относительных путей до анализируемых файлов согласно документации стандарта.

Более подробно про отчеты в формате SARIF можно прочитать в документации.

Использование wildcard-паттернов в CLMonitor

Теперь CLMonitor (утилита мониторинга сборок на Windows) поддерживает wildcard-паттерны в командах компиляции.

Более подробно про использование утилиты CLMonitor можно прочитать в документации.

Доработка .pvsconfig в C# анализаторе

В C# анализаторе доработана и унифицирована с другими анализаторами возможность включения и отключения отдельных диагностик с помощью файлов настройки анализатора .pvsconfig.

Пример://-V::3022,5623:1,3

Эта запись позволит исключить срабатывания диагностик V3022 и V5623 уровня 'High' и 'Low'.

Более подробно про использование файлов конфигурации диагностик .pvsconfig можно прочитать в документации.

Улучшение диагностики в C# анализаторе

В C# анализаторе улучшена работа с параметрами, имеющими null в качестве значения по умолчанию.

Это позволяет диагностике V3080 находить больше проблем, связанных с разыменованием нулевых ссылок.

Рассмотрим пример из реального проекта, что теперь может обнаружить анализатор:public MyEffectInstance CreateEffect( IMySourceVoice input, MyStringHash effect, MySourceVoice[] cues = null, // <= float? duration = null) { if(!m_effects.ContainsKey(effect)) { Debug.Fail(string.Format("Effect not found: {0}", effect.ToString())); return null; } var instance = new MyEffectInstance (m_effects[effect], input, cues, duration, m_engine); // <= m_activeEffects.Add(instance); return instance; } public MyEffectInstance( MyAudioEffect effect, IMySourceVoice input, MySourceVoice[] cues, float? duration, XAudio2 engine) { m_engine = engine; m_effect = effect; var inputSound = input as MySourceVoice; .... foreach(var sound in cues) // <= { .... } }

Подозрительный код на одной из старых версий проекта Space Engineers.

В методе CreateEffect параметр cues имеет значение по умолчанию null, но при создании объекта класса MyEffectInstance производится обход массива cues в цикле foreach(var sound in cues).

Вследствие чего, если параметр cues имеет значение по умолчанию, то во время создания объекта класса при входе в цикл будет обращение по нулевой ссылке с выбросом исключения NullReferenceException.

Исправлена проблема совместной работы PVS-Studio и Visual Assist

При работе одновременно с плагином PVS-Studio и Visual Assist наблюдались проблемы с переключением между файлами в Visual Studio 2019 и 2022.

Больше этих проблем нет, мы всё исправили smile.

Новые диагностики

С++

V1103. The values of padding bytes are unspecified. Comparing objects with padding using 'memcmp' may lead to unexpected result.

V2624. MISRA. The initializer for an aggregate or union should be enclosed in braces.

C#

V3193. Data processing results are potentially used before asynchronous output reading is complete. Consider calling 'WaitForExit' overload with no arguments before using the data.

V4005. Unity Engine. The expensive operation is performed inside method or property. Using such member in performance-sensitive context can lead to decreased performance.

Конкурс для C++ программистов и их любимых багов

В этом релизе команда PVS-Studio подготовила для вас новый конкурс с призами!

Для участия нужно вспомнить свой самый эпичный, мемный или глупый фейл при написании кода. Отправьте его нам до 30 декабря через специальную форму на этой странице и ждите подведения итогов в январе. Авторы 10 самых прикольных, крутых или глупых фейлов получат уникальную книгу "Вредные советы для C++ программистов" с подписью автора.

BeardyCast

Недавно часть нашей команды приняла участие в подкасте BeardyCast! Тимлид C++ Филипп Хандельянц и C# разработчик Никита Паневин вместе с ведущим обсудили темы статического анализа, качества кода и как в этом помогает статический анализатор PVS-Studio. Отдельное внимание уделено особенностям PVS-Studio, вопросу встраивания и интеграции статического анализа в процесс разработки.

Советуем послушать:

Кошмар на улице багов

Так сложилось, что в даты релиза попал Хэллоуин! Хоть он и прошел, но страшные баги никуда не делись! Сможете их найти?

Мы предлагаем вам попробовать себя в качестве охотников за привидениями! Мы собрали для вас 8 страшных историй — прочитайте их и попробуйте найти затаившиеся там баги.

Статьи

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

30 лет DOOM: новый код — новые баги

Игоры! Как пишут код для SDL (+ интервью с создателем)

Проверяем YTsaurus. Доступность, надёжность, open source

Опечатки, нулевые указатели и коварный таб: 33 фрагмента в библиотеке GTK

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

Использование расширения VS Code "PVS-Studio" для эффективной борьбы с ошибками в C# коде

Возвращаемся на Гроув-Стрит. Анализ движка Grand Theft Auto: San Andreas на Unity

Microsoft PowerToys: Король GitHub среди C# проектов с C++ ошибками

Что нового в .NET 8?

Обзор нововведений в C# 12

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

Операция "K". Ищем баги в коде IntelliJ IDEA

Немного о гигиене Java кода

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

Как заманить программиста на стенд?

Какую статью хочется прочитать в нашем блоге на тему C++, C# или Java?

Интервью с разработчиками мультитула для хакеров и пентестеров Flipper Zero

День, когда Скайнет обрёл сознание, и ещё 69 поводов собраться с коллегами. Часть 1

День, когда Скайнет обрёл сознание, и ещё 69 поводов собраться с коллегами. Часть 2

Доклады

Наша команда активно участвует в конференциях и митапах. В этом релизе C# разработчик Глеб Асламов выступил на конференции SQA Days 33 с докладом "SAST как этап цикла безопасной разработки"!

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

Советуем посмотреть:

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

А ещё у нас появилась рассылка с IT-ивентами для разработчиков! На неё и другие рассылки вы можете подписаться по ссылке.

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Gleb Aslamov. PVS-Studio 7.28: support for ARM, .NET 8, analysis of Unreal Engine projects without Unity Build, and more.



Источник новости: habr.com

DimonVideo
2023-12-15T14:50:01Z

Здесь находятся
всего 0. За сутки здесь было 0 человек
Яндекс.Метрика