Проверка Unreal Engine проектов


В данном разделе рассматривается проверка Unreal Engine проектов на операционной системе Windows. Инструкции по проверке проектов на Linux\macOS доступны по данной ссылке.

Для сборки проектов для Unreal Engine используется специализированная сборочная система Unreal Build System. Данная система интегрируется поверх сборочной системы, используемой средой Visual Studio (MSBuild), с помощью автогенерируемых makefile проектов MSBuild. Это специальный тип Visual C++ (vcxproj) проектов, в которых для непосредственного выполнения сборки выполняется команда, вызывающая стороннюю утилиту, например, (но далеко не обязательно) Make. Использование makefile проектов позволяет работать с кодом Unreal Engine из среды Visual Studio, используя такие преимущества, как автодополнение, подсветка синтаксиса, навигация по символам и т.п.

В связи с тем, что makefile проекты MSBuild сами по себе не содержат полной информации, необходимой для компиляции, а, следовательно, и препроцессирования исходных C/C++ файлов, PVS-Studio не поддерживает проверку таких проектов с помощью Visual Studio плагина или консольной утилиты PVS-Studio_Cmd.exe. Поэтому, для проверки таких проектов с помощью PVS-Studio можно пойти двумя путями - отслеживание вызовов компилятора (Compiler Monitoring) и прямая интеграция C/C++ анализатора PVS-Studio.exe в сборочную утилиту Unreal Build Tool. Рассмотрим эти варианты подробнее.

Проверка с помощью отслеживания вызовов компилятора

Для сборки на Windows Unreal Build System использует компилятор Visual C++ - cl.exe. Этот компилятор поддерживается системой отслеживания компиляторов PVS-Studio на Windows. Эту систему можно использовать как из приложения C and C++ Compiler Monitoring UI (Standalone.exe), так и с помощью консольной утилиты CLMonitor.exe.

Запуск мониторинга компиляций можно осуществлять вручную из приложения Compiler Monitoring UI, или назначить на событие начала\окончания сборки в Visual Studio. Результатом работы системы мониторинга является XML файл отчёта plog, который можно открыть в Visual Studio плагине PVS-Studio, или преобразовать к одному из стандартных форматов (txt, html, csv) с помощью специальной утилиты PlogConverter.

Подробное описание системы отслеживания вызовов компилятора доступно в данном разделе документации. Мы рекомендуем использовать данный способ запуска анализа для знакомства с анализатором, как наиболее простой в настройке.

Проверка с помощью интеграции в Unreal Build Tool

Общее описание прямого встраивания C/C++ анализатора в любую сборочную систему доступно здесь.

В случае с Unreal Build System, разработчики из Epic Games предоставляют возможность использовать PVS-Studio с помощью интеграции со сборочной утилитой Unreal Build Tool, начиная с версии 4.17.

Unreal Build Tool позволяет запускать анализ PVS-Studio, добавив данный флаг в строку запуска:

-StaticAnalyzer=PVSStudio

Например, полная строка запуска Unreal Build Tool может выглядеть так:

UnrealBuildTool.exe UE4Client Win32 Debug -WaitMutex -FromMsBuild 
    -StaticAnalyzer=PVSStudio -DEPLOY

Для включения анализа при запуске из Visual Studio, откройте свойства проекта Properties -> Configuration Properties -> NMake и добавьте флаг -StaticAnalyzer=PVSStudio в опции сборки и пересборки (Build Command Line / Rebuild All Command Line)

Путь до файла с результатами анализа будет выведен в Output (Build) окно Visual Studio (или stdout, если вы запускали Unreal Build Tool вручную из командной строки). Данный файл с результатами анализа имеет "нераспарсенный" вид - его можно открыть в IDE командой ' PVS-'Studio|Open/Save|Open Analysis Report' и выбрав тип файла 'unparsed output', либо результаты анализа можно преобразовать с помощью утилиты PlogConverter, как это было описано в разделе выше для XML лога.

Перед началом анализа вам будет необходимо ввести лицензию на анализатор - откройте Visual Studio, и в окне 'PVS-Studio|Options...Registration' введите ваши данные (обратите внимание, что в до версии Unreal Engine 4.20, UBT не умел подхватывать лицензию из общего файла настроек PVS-Studio; в случае, если UBT не видит лицензию, введённую через интерфейс, вам необходимо создать отдельный файл лицензии с именем PVS-Studio.lic вручную и подложить его в директорию '%USERPROFILE%\AppData\Roaming\PVS-Studio').

Примечание 1: обычный Visual Studio trial режим PVS-Studio не работает с Unreal Build Tool проектами. Чтобы попробовать анализатор, вы можете воспользоваться проверкой с помощью системы Compiler Monitoring из приложения Compiler Monitoring UI (результаты работы можно смотреть и в Visual Studio, сохранив лог после проверки из Compiler Monitoring UI). Напишите нам на support@viva64.com, если вы хотите получить пробную лицензию для тестирования режима интеграции с Unreal Build Tool.

Примечание 2: интеграция PVS-Studio с Unreal Build Tool поддерживает не все настройки анализатора, доступные из Visual Studio (PVS-Studio|Options...). В данный момент поддерживается добавление директорий-исключений через 'PVS-Studio|Options...|Don't Check Files' и фильтрация загруженных результатов анализа через 'Detectable Errors'.

В режиме интеграции с UBT анализатор запускается в режиме работы только группы диагностик General Analysis. Если вас интересует запуск анализатора для других групп диагностик, доступных в PVS-Studio, напишите нам на support@viva64.com.


Найденные ошибки

Проверено проектов
346
Собрано ошибок
13 188

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;