Вышел новый релиз 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.
Больше этих проблем нет, мы всё исправили :).
Новые диагностики
С++
C#
Java
Конкурс для C++ программистов и их любимых багов
В этом релизе команда PVS-Studio подготовила для вас новый конкурс с призами!
Для участия нужно вспомнить свой самый эпичный, мемный или глупый фейл при написании кода. Отправьте его нам до 30 декабря через специальную форму на этой странице и ждите подведения итогов в январе. Авторы 10 самых прикольных, крутых или глупых фейлов получат уникальную книгу "Вредные советы для C++ программистов" с подписью автора.
BeardyCast
Недавно часть нашей команды приняла участие в подкасте BeardyCast! Тимлид C++ Филипп Хандельянц и C# разработчик Никита Паневин вместе с ведущим обсудили темы статического анализа, качества кода и как в этом помогает статический анализатор PVS-Studio. Отдельное внимание уделено особенностям PVS-Studio, вопросу встраивания и интеграции статического анализа в процесс разработки.
Советуем послушать:
Кошмар на улице багов
Так сложилось, что в даты релиза попал Хэллоуин! Хоть он и прошел, но страшные баги никуда не делись! Сможете их найти?
Мы предлагаем вам попробовать себя в качестве охотников за привидениями! Мы собрали для вас 8 страшных историй — прочитайте их и попробуйте найти затаившиеся там баги.
Статьи
Для тех, кто пишет на C++
Для тех, кто пишет на C#
Для тех, кто пишет на Java
Статьи общей тематики
Доклады
Наша команда активно участвует в конференциях и митапах. В этом релизе C# разработчик Глеб Асламов выступил на конференции SQA Days 33 с докладом "SAST как этап цикла безопасной разработки"!
В докладе поднимаются темы качества и безопасности кода, и как в этом могут помочь инструменты статического анализа.
Советуем посмотреть:
Хотите проверить свой проект с помощью PVS-Studio? Начните с этой страницы.
А ещё у нас появилась рассылка с IT-ивентами для разработчиков! На неё и другие рассылки вы можете подписаться по ссылке.