﻿# Исключение из анализа файлов и каталогов

При проверке проектов с большим количеством сторонних библиотек бывает необходимо отсеять лишний шум и сосредоточиться на потенциальных проблемах в своём коде\. Для таких целей в инструментах PVS\-Studio предусмотрен механизм исключения файлов из анализа\. Благодаря механизму исключений вы можете не только убрать ненужные предупреждения, но и значительно увеличить скорость анализа вашего проекта\.

## Исключение файлов через настройки IDE

### Visual Studio и С and C\+\+ Compiler Monitoring UI

Для Visual Studio откройте настройки плагина _Extensions \-\> PVS\-Studio \-\> Options \-\> Don't Check Files_\.

Если Вы используете утилиту _C and C\+\+ Compiler Monitoring UI_, то откройте _Tools \-\> Option\.\.\. \-\> Don't Check Files_\.

В появившимся окне вы можете указать файлы и каталоги, которые должны быть исключены из анализа\. Вы также можете использовать wildcard\-маски\.

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

Стоит отметить, что не все маски в плагине для Visual Studio можно применить для фильтрации существующего отчёта\. Если маска неприменима для фильтрации, вы получите сообщение о необходимости перезапуска анализа для её применения\. Маски, в которых используется символ '\*' в начале и/или в конце, сразу применяются для фильтрации предупреждений в таблице плагина\.

Подробнее об исключении файлов через настройки плагина для Visual Studio можно прочесть [тут](https://pvs-studio.ru/ru/docs/manual/0014/)\.

Вы также можете исключить файлы из анализа через контекстное меню в отчёте анализатора\. Для этого щёлкните правой кнопкой мыши по срабатыванию и выберите пункт 'Don't check files and hide all messages from\.\.\.', в раскрывшемся меню вы сможете выбрать уровень вложенности каталогов, с которого следует исключить файлы\.

![Exclude_paths_ru/image3.png](https://import.viva64.com/docx/blog/Exclude_paths_ru/image3.png)

**Обратите внимание**, что информация об исключаемых каталогах и файлах записывается в глобальный файл настроек _Settings\.xml_ и может быть использована другими инструментами PVS\-Studio, если им не передан путь для файла настроек\.

### Плагины для CLion и Rider

Чтобы исключить файлы или каталоги из анализа, перейдите в настройки плагина PVS\-Studio \(_Tools \-\> PVS\-Studio \-\> Settings_\) и выберите раздел _Excludes\._

![Exclude_paths_ru/image4.png](https://import.viva64.com/docx/blog/Exclude_paths_ru/image4.png)

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

Вы также можете исключить из анализа файл или каталог непосредственно через контекстное меню отчёта PVS\-Studio\. Для этого нажмите правой кнопкой мыши по сообщению и выберите пункт 'Exclude From Analysis', в раскрывшемся меню вы сможете выбрать уровень вложенности каталогов, с которого следует исключить файлы из анализа\.

![Exclude_paths_ru/image5.png](https://import.viva64.com/docx/blog/Exclude_paths_ru/image5.png)

**Обратите внимание**, что информация об исключаемых каталогах и файлах записывается в глобальный файл настроек _Settings\.xml_ и может быть использована другими инструментами PVS\-Studio, если им не передан путь для альтернативного файла настроек\.

## Исключение файлов через файл настроек Settings\.xml

Консольные инструменты могут использовать как глобальный файл настроек _Settings\.xml, _так и специфичный, переданный в качестве аргумента командной строки\. Использование специфичного файла может быть полезно, если у вас есть специальные настройки анализа для проекта, которые не должны повлиять на результаты анализа других проектов\. Например, список исключаемых каталогов\. 

Чтобы создать альтернативный файл настроек, скопируйте файл Settings\.xml из каталога '%APPDATA%/PVS\-Studio/' \(Windows\) или '\~/\.config/PVS\-Studio' \(Linux\) в любое место \(например, в каталог проверяемого проекта\)\. Затем добавьте исключаемые файлы и каталоги в узел _ApplicationSettings/PathMasks_ \(если это каталог\) или в _ApplicationSettings/FileMasks_ \(если это файл\)\.

Например, так:

```cpp
<ApplicationSettings ...>
  ...
  <PathMasks>
  ...
     <string>\EU*\Engine\Source</string>
  </PathMasks>
  ...
</ApplicationSettings>
```

Теперь, для того чтобы передать собственный файл настроек в _PVS\-Studio\_Cmd\.exe_ или pvs\-studio\-dotnet \(Linux и macOS\), используйте параметр _\-\-settings \(\-s\)_:

```cpp
PVS-Studio_Cmd.exe -t ProjName.sln -s /path/to/NonDefaultSettings.xml
```

Для передачи параметра в _CLMonitor\.exe_ используйте флаг _\-\-settings \(\-t\)_ в любом режиме запуска:

```cpp
CLMonitor.exe monitor -t /path/to/NonDefaultSettings.xml
```

## Исключение файлов через файл конфигурации диагностик \.pvsconfig

Вы можете создать файл _\.pvsconfig _\(файл конфигурации диагностик анализатора\), в котором с помощью специальных комментариев можно описать файлы и каталоги, исключаемые из анализа\. Подробнее про файл \.pvsconfig можно узнать [тут](https://pvs-studio.ru/ru/docs/manual/6630/)\.

Для исключения файла или каталога файлов из анализа вам достаточно указать до него путь или маску пути, используя специальный комментарий _//V\_EXCLUDE\_PATH_\.

Например:

```cpp
//V_EXCLUDE_PATH C:\TheBestProject\ThirdParty
//V_EXCLUDE_PATH *\UE*\Engine\Source\*
//V_EXCLUDE_PATH *.autogen.cs
```

Начиная с версии 7\.34 PVS\-Studio можно использовать комментарий _//V\_ANALYSIS\_PATHS_ с режимом _skip\-analysis\._

Например:

```cpp
//V_ANALYSIS_PATHS skip-analysis=C:\TheBestProject\ThirdParty
//V_ANALYSIS_PATHS skip-analysis=*\UE*\Engine\Source\*
//V_ANALYSIS_PATHS skip-analysis=*.autogen.cs
```

Теперь вы можете использовать файл \.pvsconfig с утилитами PVS\-Studio:

Для CLMonitor\.exe через флаг _\-с \(\-\-pvsconfig\)_:

```cpp
CLMonitor.exe analyze ... -c /path/to/.pvsconfig
```

Для PVS\-Studio\_Cmd\.exe и pvs\-studio\-dotnet через флаг _\-С \(\-\-rulesConfig\):_

```cpp
PVS-Studio_Cmd.exe -t target.sln -o PVS-Studio.log -C /path/to/.pvsconfig
pvs-studio-dotnet -t target.csproj -o PVS-Studio.log -C /path/to/.pvsconfig
```

Для CompilerCommandsAnalyzer\.exe \(Windows\) и pvs\-studio\-analyzer \(Linux, macOS\) через флаг _\-R \(\-\-rules\-config\):_

```cpp
CompilerCommandsAnalyzer analyze --cfg /path/to/PVS-Studio.cfg \
                                    -R /path/to/.pvsconfig
```

Если вы используете утилиту _C and C\+\+ Compiler Monitoring UI_, то путь до файла \.pvsconfig можно передать через интерфейс запуска мониторинга:

![Exclude_paths_ru/image6.png](https://import.viva64.com/docx/blog/Exclude_paths_ru/image6.png)

Плагины PVS\-Studio \(для Visual Studio, Rider\) умеют автоматически определять файл _\.pvsconfig_, если он добавлен в Solution или проект и имеет расширение _\.pvsconfig_\. Файлы конфигурации, добавленные в Solution, имеют глобальную область видимости и распространяются на все проекты этого Solution'a\. Файлы \.pvsconfig, добавленные в проект, применяются только для проекта, в который они добавлены\.

## Для утилит CompilerCommandsAnalyzer\.exe и pvs\-studio\-analyzer

Если для проверки C и C\+\+ проектов используется кроссплатформенная утилита _pvs\-studio\-analyzer\(Linux, macOS\) / CompilerCommandsAnalyzer\.exe \(Windows\)_, то исключить файлы из анализа возможно следующими способами\.

### Прямая передача исключаемых файлов и каталогов

Позволяет исключить файлы из анализа, передав пути до них в качестве аргументов запуска _pvs\-studio\-analyzer/CompilerCommandsAnalyzer\.exe _через флаг _\-e \(\-\-exclude\-path\)_:

```cpp
pvs-studio-analyzer analyze ... -e /third-party/ \
                                -e /test/        \
                                -e /path/to*/exclude-path
```

Или через флаг _\-\-analysis\-paths_ с режимом _skip\-analysis:_

```cpp
pvs-studio-analyzer analyze ... \
--analysis-paths skip-analysis=/third-party/ \
--analysis-paths skip-analysis=/test/ \
--analysis-paths skip-analysis=/path/to*/exclude-path
```

При указании пути вы также можете использовать шаблоны командных оболочек \(glob\)\.

### Через файл конфигурации \*\.cfg

Создайте текстовый файл \(например, _MyProject\.cfg_\)\. Поместите в него список исключаемых каталогов через параметр _exclude\-path_\.

Пример:

```cpp
exclude-path=/third-party/
exclude-path=*/test/*
exclude-path=*/lib-*/*
```

Или используя параметр _analysis\-paths _с режимом _skip\-analysis_:

```cpp
analysis-paths=skip-analysis=/third-party/
analysis-paths=skip-analysis=*/test/*
analysis-paths=skip-analysis=*/lib-*/*
```

Затем запустите анализ, передав путь до файла конфигурации через флаг _\-\-cfg:_

```cpp
pvs-studio-analyzer analyze ... --cfg ./MyProject.cfg
```

Вы можете вынести в файл конфигурации и другие параметры запуска\. Подробнее об этом написано [тут](https://pvs-studio.ru/ru/docs/manual/6615/#cfgFile)\.