Вышел новый релиз PVS-Studio — 7.29. Теперь можно запускать анализ Java-проектов через плагин для VS Code, проверять умные указатели Boost, использовать плагин PVS-Studio для Qt Creator 12 на macOS, и это ещё не всё! Больше подробностей в этой заметке.
Загрузить актуальную версию PVS-Studio можно здесь.
Поддержка Java проектов в плагине для Visual Studio Code
В плагине PVS-Studio для Visual Studio Code появилась возможность анализа Java-проектов. Функционал включает в себя:
запуск анализа и просмотр отчёта;
подавление предупреждений с помощью suppress-файлов;
инкрементальный анализ;
и другие функции, описанные в соответствующем разделе документации.
Поддержка умных указателей Boost
Анализатор C++ получил поддержку умных указателей из библиотеки Boost: boost::unique_ptr и boost::shared_ptr.
Теперь анализатор PVS-Studio определяет ошибки наподобие разыменовывания нулевого указателя при использовании данных классов.
Учёт хэша строки для разметки ложноположительных срабатываний
В новой версии PVS-Studio появился режим учёта хэша строки исходного кода, вызвавшей срабатывание при разметке ложноположительных срабатываний.
В PVS-Studio и до этого считался хэш, но он применялся для навигации и более эффективной работы suppress-файлов. Теперь появился новый способ применения хэша: его можно указать в строке при разметке ложноположительных срабатываний. Это позволяет понять, менялась ли строка кода с момента отметки срабатывания как ложного. В случае наличия изменений в коде, отметка ложноположительного срабатывания перестанет подавлять предупреждение анализатора.
Пример строки, в которой указывается отметка ложноположительного срабатывания и хэш для отслеживания изменений:
std::string(4, std::string().at(0)); //-V530 //-VH"920700501"
Поддержка этой функциональности появилась в плагинах PVS-Studio для Microsoft Visual Studio. Подробнее про новый режим можно узнать в документации.
Примечание. Если вам интересно поподробнее узнать о способах и технологиях подавления ложноположительных срабатываний, то можете ознакомиться с этой статьёй.
Поддержка плагина для Qt Creator 12 на macOS
Появилась поддержка плагина PVS-Studio для Qt Creator 12 на операционных системах семейства macOS.
Подробнее про использование плагина PVS-Studio в Qt Creator можно узнать в документации.
Новые диагностики
C, С++
V839. Decreased performance. Function returns a constant value. This may interfere with the move semantics.
V1104. Priority of the 'M' operator is higher than that of the 'N' operator. Possible missing parentheses.
V2625. MISRA. Identifier with external linkage should be unique.
C#
V3194. Calling 'OfType' for collection will return an empty collection. It is not possible to cast collection elements to the type parameter.
V3195. Collection initializer implicitly calls 'Add' method. Using it on member with default value of null will result in null dereference exception.
Java
V6108. Do not use real-type variables in 'for' loop counters.
V6109. Potentially predictable seed is used in pseudo-random number generator.
С++ квиз от PVS-Studio и Сергея Кушниренко
В этом релизе команда PVS-Studio вместе с Сергеем Кушниренко подготовила С++ квиз на основе ошибок, описанных в его статьях.
Попробуйте найти ошибки в коде и проверить свою внимательность и знание языка! Квиз доступен по ссылке.
Статьи
Для тех, кто пишет на C++
Предновогоднее шоу: Топ 10 ошибок в C и С++ проектах в 2023 году
Следует ли проверять указатель на NULL перед вызовом функции free?
От винта! Смотрим движок War Thunder и говорим с его создателями
Квиз со звёздочкой для С++ программистов от Сергея Кушниренко
Для тех, кто пишет на C#
Для тех, кто пишет на Java
Статьи общей тематики
Хотите проверить свой проект с помощью PVS-Studio? Начните с этой страницы.
Если вы хотите получать новости о новых релизах, можете подписаться на рассылку от команды PVS-Studio по ссылке.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Gleb Aslamov. PVS-Studio 7.29: Java code check in VS Code, Boost smart pointers, and plugin for Qt Creator on macOS.