﻿# PVS\-Studio 7\.32: оптимизация анализа, новые плагины и многое другое

Вышел новый релиз PVS\-Studio — 7\.32\. Оптимизация анализа на C\+\+, новые плагины и функциональность, и ещё много других обновлений\! Больше подробностей в этой заметке\.

![1155_7_32_ru/image1.png](https://import.viva64.com/docx/blog/1155_7_32_ru/image1.png)




> Загрузить актуальную версию PVS\\\-Studio можно \[здесь\]\(https://pvs\-studio\.ru/ru/pvs\-studio/try\-free/\)\\\.



**Оптимизация анализа инстанцирования шаблонов**

В новом релизе было оптимизировано потребление памяти С\+\+ анализатора при анализе инстанцирования шаблонов\. 

Сохранена возможность отключения анализа их инстанирования:

* с помощью флага настройки \- _DisableTemplateInstantiationCpp_ в [плагине PVS\-Studio для Visual Studio](https://pvs-studio.ru/ru/docs/manual/6522/);
* с помощью настройки _//V\_DISABLE\_TEMPLATE\_INSTANTIATION_ в [файлах конфигурации pvsconfig](https://pvs-studio.ru/ru/docs/manual/6630/#disable_templates) в случае, если потребление памяти анализатором всё ещё остаётся избыточно высоким\. 

**Изменение приоритета для флага _sourceTreeRoot_**

Для утилиты [PVS\-Studio\_Cmd\.exe](https://pvs-studio.ru/ru/docs/manual/0035/) изменён приоритет флага _\-\-sourceTreeRoot_, который задаёт корневую часть пути для конвертации путей из абсолютных в относительные\. 

Теперь этот флаг имеет приоритет над настройками:

* _UseSolutionDirAsSourceTreeRoot_ в [конфигурационном файле Settings\.xml](https://pvs-studio.ru/ru/docs/manual/6653/);
* _//V\_SOLUTION\_DIR\_AS\_SOURCE\_TREE\_ROOT_ в [файлах конфигурации диагностик pvsconfig](https://pvs-studio.ru/ru/docs/manual/6630/)\.

**Новая функциональность анализа для сборочной системы MSBuild**

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

Эта возможность реализуется включением флага _V\_EXCLUDE\_PROJECT_ в [файл конфигурации диагностик pvsconfig](https://pvs-studio.ru/ru/docs/manual/6630/)\. 

**Использование pvsconfig в JetBrains CLion**

Для плагина PVS\-Studio для IDE JetBrains CLion добавлена возможность использования [файлов конфигурации диагностик pvsconfig](https://pvs-studio.ru/ru/docs/manual/6630/)\.

Подробнее про работу PVS\-Studio в JetBrains Rider и CLion можно узнать в [документации](https://pvs-studio.ru/ru/docs/manual/0052/)\.

**"Новый" плагин PVS\-Studio в SonarQube**

Начиная с версии SonarQube 10\.1, в связи с изменениями в API платформы был разработан новый плагин для интеграции анализатора PVS\-Studio в платформу SonarQube\. 

Теперь для использования PVS\-Studio в SonarQube необходимо использовать новую версию плагина\. Версия плагина PVS\-Studio для более ранних версий SonarQube продолжает поддерживаться и получать обновления параллельно с новым плагином\.

Подробнее про использование PVS\-Studio в SonarQube можно узнать в [документации](https://pvs-studio.ru/ru/docs/manual/6630/#sections)\.

**Изменение синтаксиса пользовательских аннотаций**

Изменён синтаксис [пользовательских аннотаций](https://pvs-studio.ru/ru/docs/manual/6743/) в формате JSON для С\+\+ анализатора PVS\-Studio:

* использование атрибутов _nullable\_initialized_ и _nullable\_uninitialized_ устарело;
* вместо них введены атрибуты возвращаемого объекта _not\_null_, _maybe\_null_, _always\_null_\.

**Поддержка разметки помеченных данных**

В C\+\+ анализаторе PVS\-Studio добавлена возможность разметки источников и приёмников при [анализе помеченных данных](https://pvs-studio.ru/ru/blog/terms/6496/) \(taint\-анализ\)\.

Она реализована в механизме [пользовательский аннотаций](https://pvs-studio.ru/ru/docs/manual/6743/) в формате JSON\.

**Поддержка новых сборочных систем для C\+\+ анализатора**

Добавлена поддержка интеграции анализатора PVS\-Studio в проекты, использующие сборочные системы [Bazel](https://pvs-studio.ru/ru/docs/manual/6557/#bazel) и [Scons](https://pvs-studio.ru/ru/docs/manual/6557/#scons)\.

**Поддержка новой версии Qt Сreator**

Плагин PVS\-Studio стал доступен для [Qt Creator версий 14\.x](https://pvs-studio.ru/ru/docs/manual/6648/)\. 

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

**Анонс нового вебинара**

![1155_7_32_ru/image2.png](https://import.viva64.com/docx/blog/1155_7_32_ru/image2.png)

Мы анонсируем продолжение марафона вебинаров про "ГОСТ Р 71207–2024 — Статический анализ программного обеспечения"\. Темой в этот раз являются "Технологии анализа кода"\.

Это четвёртый из пяти вебинаров, посвящённых введённому в 2024 году стандарту по методологии статического анализа кода\. Чтобы обеспечить поиск критических ошибок на высоком уровне, стандарт описывает методы анализа, которые должны быть реализованы в статических анализаторах\. 

Посмотрим на практических примерах, как работают технологии статического анализа и какие ошибки можно с их помощью выявлять\.

Вебинар пройдёт 23 августа в 14:00 \(по Москве\)\.

Зарегистрироваться можно [здесь](https://pvs-studio.ru/ru/webinar/)\.


> Предыдущие вебинары по тематике ГОСТ доступны \[здесь\]\(https://pvs\-studio\.ru/ru/blog/video/webinars/\)



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

C, С\+\+

* [V1111](https://pvs-studio.ru/ru/docs/warnings/v1111/)\. The index was used without check after it was checked in previous lines\.
* [V1112](https://pvs-studio.ru/ru/docs/warnings/v1112/)\. Comparing expressions with different signedness can lead to unexpected results\.
* [V2021](https://pvs-studio.ru/ru/docs/warnings/v2021/)\. Using assertions may cause the abnormal program termination in undesirable contexts\.

C\#

* [V3201](https://pvs-studio.ru/ru/docs/warnings/v3201/)\. Return value is not always used\. Consider inspecting the 'foo' method\.
* [V3202](https://pvs-studio.ru/ru/docs/warnings/v3202/)\. Unreachable code detected\. The 'case' value is out of the range of the match expression\.
* [V3203](https://pvs-studio.ru/ru/docs/warnings/v3203/)\. Method parameter is not used\.

Java

* [V6115](https://pvs-studio.ru/ru/docs/warnings/v6115/)\. Not all Closeable members are released inside the 'close' method\.
* [V6116](https://pvs-studio.ru/ru/docs/warnings/v6116/)\. The class does not implement the Closeable interface, but it contains the 'close' method that releases resources\.
* [V6117](https://pvs-studio.ru/ru/docs/warnings/v6117/)\. Possible overflow\. The expression will be evaluated before casting\. Consider casting one of the operands instead\.

**Статьи**

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

* [Ненавижу, \_\_\_\_\_, C\+\+ массивы\!](https://pvs-studio.ru/ru/blog/posts/cpp/1134/)
* [Насекомое 13 лет сидит в вашем компиляторе и не собирается оттуда вылезать](https://pvs-studio.ru/ru/blog/posts/cpp/1141/)
* [Как найти работу для фиксиков: анализируем Godot Engine](https://pvs-studio.ru/ru/blog/posts/cpp/1150/)
* [Дебажим баги в дебаггере x64dbg\. Без дебаггера](https://pvs-studio.ru/ru/blog/posts/cpp/1146/)
* [Путеводитель C\+\+ программиста по неопределённому поведению: часть 2 из 11](https://pvs-studio.ru/ru/blog/posts/cpp/1136/)
* [Путеводитель C\+\+ программиста по неопределённому поведению: часть 3 из 11](https://pvs-studio.ru/ru/blog/posts/cpp/1149/)
* [12 мгновений опечаток и копипаста, или почему сбоит AI: проверяем код OpenVINO](https://pvs-studio.ru/ru/blog/posts/cpp/1137/)
* [Фиксим баги в вашем AI или разбор ошибок в OpenVINO](https://pvs-studio.ru/ru/blog/posts/cpp/1145/)

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

* [\.NET Digest \#1](https://pvs-studio.ru/ru/blog/posts/csharp/1140/)
* [\.NET Digest \#2](https://pvs-studio.ru/ru/blog/posts/csharp/1148/)
* [Flax Engine\. Знакомство с игровым движком и анализ его исходного кода](https://pvs-studio.ru/ru/blog/posts/cpp/1153/)
* [Подборка докладов по С\# 2023\-2024](https://pvs-studio.ru/ru/blog/posts/csharp/1138/)

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

* [Как сделать анализатор кода за два дня](https://pvs-studio.ru/ru/blog/posts/java/1154/)
* [Побитовые проверки в Java и почему они так неоднозначны](https://pvs-studio.ru/ru/blog/posts/java/1135/)
* [Даже математики ошибаются](https://pvs-studio.ru/ru/blog/posts/java/1151/)
* [Неожиданности в авторизации\. Что скрывает Keycloak?](https://pvs-studio.ru/ru/blog/posts/java/1142/)
* [Поисковый запрос на баги в Apache Solr](https://pvs-studio.ru/ru/blog/posts/java/1147/)

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

* [Дайте два\! Обновление плагина PVS\-Studio для SonarQube](https://pvs-studio.ru/ru/blog/posts/1152/)
* [Тотемные утки и шаманские бубны: есть ли у разработчиков свои ритуалы и приметы?](https://pvs-studio.ru/ru/blog/posts/1139/)
* [Про́клятый огонь, или магия препроцессора C](https://pvs-studio.ru/ru/blog/posts/1143/)
* [Как научить кота программировать\. Необычные подходы к изучению нового](https://pvs-studio.ru/ru/blog/posts/1144/)

**Доклады**

**Ошибки в коде: ожидания и реальность**

Используя статический анализатор кода, пользователь может находить в коде вовсе не те ошибки, которые ожидал\. Это не хорошо и не плохо, а интересная тема для обсуждения\. Почему синтетические тесты врут, и почему их сложно составлять\. Ложные ожидания при разработке и использовании статических анализаторов кода\. Интересные закономерности в обнаруживаемых ошибках\.

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

<https://www.youtube.com/watch?v=0H58_I787_Q>




> Хотите проверить свой проект с помощью PVS\\\-Studio? Начните с \[этой страницы\]\(https://pvs\-studio\.ru/ru/pvs\-studio/try\-free/\)\\\.



Если вы хотите получать новости о новых релизах, можете подписаться на рассылку от команды PVS\-Studio по [ссылке](https://pvs-studio.ru/ru/subscribe/)\.