﻿# Анализ проектов на Unity с помощью PVS\-Studio

Unity проекты, написанные на C\#, можно проверить с помощью PVS\-Studio из консоли или IDE\. Проверяемый Unity проект должен успешно собираться, чтобы результаты проверки были максимально корректными и полными\.

Загрузить анализатор можно на [этой странице](https://pvs-studio.ru/ru/pvs-studio/download/)\.

Перед началом работы с PVS\-Studio нужно ввести данные лицензии\. [Здесь](https://pvs-studio.ru/ru/docs/manual/0046/) написано, как это сделать\.

## Проверка с помощью плагинов PVS\-Studio для IDE

### Открытие Unity проекта в Visual Studio и JetBrains Rider

Перед началом работы с кодом Unity проекта необходимо установить в настройках Unity предпочитаемый редактор скриптов\. Это можно сделать с помощью параметра "External Script Editor" на вкладке "External Tools" в окне "Preferences"\. Чтобы открыть это окно, используйте опцию меню "Edit" \-\> "Preferences" в редакторе Unity:

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

После этого открыть Unity проект в IDE можно, используя опцию "Assets" \-\> "Open C\# Project" в редакторе Unity:

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

Также вы можете открыть сгенерированный Unity \.sln файл из IDE\. Если \.sln файл отсутствует, то необходимо произвести вышеописанные действия в редакторе Unity\. Тогда \.sln будет сгенерирован\.

### Использование анализатора в Visual Studio

Проанализировать Unity проект можно из Visual Studio\. Руководство по использованию плагина доступно по [ссылке](https://pvs-studio.ru/ru/docs/manual/6522/)\.

Анализ может быть выполнен для следующих элементов:

* весь Unity проект \(\.sln\);
* \.csproj проекты, сгенерированные по Assembly Definition;
* отдельные файлы \.cs\.

Запустить анализ можно из подменю плагина PVS\-Studio в меню "Extensions" на верхней панели меню:

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

Также запуск анализа доступен из окна "Solution Explorer" через контекстное меню по нажатию на элементе решения\.

Отчёт об анализе доступен в окне "PVS\-Studio":

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

### Использование анализатора в JetBrains Rider

Проанализировать Unity проект можно из JetBrains Rider\. Возможности этого плагина и его применение аналогичны таковым для плагина Visual Studio\. Подробная инструкция по использованию плагина для JetBrains Rider доступна по [ссылке](https://pvs-studio.ru/ru/docs/manual/0052/)\.

Запустить анализ можно через главное меню:

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

## Проверка проекта из командной строки

PVS\-Studio можно запускать из командной строки\. Это удобно, если вы хотите [интегрировать анализ](https://pvs-studio.ru/ru/docs/manual/0005/) проекта в вашу инфраструктуру CI/CD\.

Руководство по использованию CLI версии PVS\-Studio доступно по [ссылке](https://pvs-studio.ru/ru/docs/manual/0035/)\.

Вы можете проверить всё решение \(sln\), отдельные проекты \(csproj\) или некоторый набор файлов исходного кода\. В последнем случае путь к \.sln/\.csproj файлу также обязателен\.

Для анализа C\# проектов на Windows используется "PVS\-Studio\_Cmd\.exe", на Unix\-like системах "pvs\-studio\-dotnet"\.

Пример запуска PVS\-Studio через CLI на Windows:

```cpp
PVS-Studio_Cmd.exe -t D:\UnityProjects\MyProject\MyProject.sln
```

Пример запуска PVS\-Studio через CLI на Unix\-like системах:

```cpp
pvs-studio-dotnet -t ./MyUnityProject.sln
```

По умолчанию анализатор генерирует отчёты в формате:

* plog на Windows;
* json на Linux и macOS\.

Отчёты можно открывать с помощью IDE плагинов PVS\-Studio\.

_Примечание: отчёты в формате plog не поддерживается в Rider\. Кроме того, под Linux и macOS не поддерживается конвертация таких отчётов\._

Ниже представлено меню плагина под Visual Studio:

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

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

Для конвертации используется CLI утилита PlogConverter\. На Windows используется "PlogConverter\.exe", на Unix\-like системах "plog\-converter"\. Руководство к утилите доступно [здесь](https://pvs-studio.ru/ru/docs/manual/0038/)\. 

Пример конвертации отчёта в формат HTML на Windows \(вводится в одну строку\):

```cpp
PlogConverter.exe D:\UnityProjects\MyProject\MyProject.plog
-t FullHtml
-o D:\UnityProjects\MyProject\
```

Пример конвертации отчёта в формат HTML на Unix\-like системах:

```cpp
plog-converter –t fullhtml ./ ./MyProject.plog
```

Эти команды конвертируют отчёт в формат HTML, который удобен для просмотра в браузере и для рассылки по почте\. Пример отчёта в формате FullHTML:

![UnityGuide_ru/image8.png](https://import.viva64.com/docx/blog/UnityGuide_ru/image8.png)

## Проблемы при анализе

### The solution file has two projects named "UnityEngine\.UI"

Если в Unity в настройках генерации C\# проектов выбрана опция "Player projects", то происходит создание solution файла с дубликатами названий проектов\. При анализе проекта с помощью PVS\-Studio это может приводить к ошибке следующего вида: The solution file has two projects named "UnityEngine\.UI"\. Для проведения анализа эту опцию требуется отключить\.

![UnityGuide_ru/image9.png](https://import.viva64.com/docx/blog/UnityGuide_ru/image9.png)

После этого может понадобиться заново сгенерировать проектные файлы\. Для этого есть кнопка ниже – "Regenerate project files"\.

После того как дубликаты из sln\-файла пропадут, анализ должен работать нормально\. Подробнее эта проблема с повторяющимися именами проектов описана [здесь](https://pvs-studio.ru/ru/blog/posts/csharp/0834/)\.

### Не изменяйте файлы проекта во время анализа

Во время анализа мы рекомендуем не совершать действий, которые могут привести к изменению sln/csproj файлов или файлов исходного кода\. Например, это такие действия, как изменение или создание Assembly Definitions и Assembly Definition References, добавление новых скриптов\.