pvs-stdio ue4_在Windows OS上检查虚幻引擎项目时的PVS-Studio使用情况

article/2025/9/25 18:36:29

pvs-stdio ue4

Picture 2

This article focuses on the specifics of checking Unreal Engine projects with the PVS-Studio static analyser on the Windows operating system: how to install the analyser, check a project, where and how to view an error report.

本文重点介绍在Windows操作系统上使用PVS-Studio静态分析器检查Unreal Engine项目的细节:如何安装分析器,检查项目,在何处以及如何查看错误报告。

An integral part of the series of our articles are topics related to the gaming industry. Check an actual engine used in AAA-games — you're welcome, come up with top errors in the gaming industry — go ahead, find bugs in one of the most popular game engines Unreal Engine (UE) — easy enough. In game development, as well as with any other application, the quality of the code does matter. Errors are best found as early as possible and the best option is to do it automatically — this is where static code analysers come to the aid of programmers.

我们的系列文章中不可或缺的部分是与游戏行业相关的主题。 检查AAA游戏中使用的实际引擎-不用客气 ,提出游戏行业中的主要错误- 继续进行 ,查找最流行的游戏引擎之一,虚幻引擎(虚幻引擎)中的错误- 很容易 。 在游戏开发以及任何其他应用程序中,代码的质量确实很重要。 最好尽早发现错误,最好的选择是自动执行错误-这是在静态代码分析器帮助程序员的地方。

In this article, I'll try to briefly talk about how you can use the PVS-Studio static analyser to check projects created in UE. PVS-Studio can help you make your project's code better by finding bugs in it, thereby allowing you to reduce the time you spend on code review.

在本文中,我将尝试简要讨论如何使用PVS-Studio静态分析器检查在UE中创建的项目。 PVS-Studio可以通过发现项目中的错误来帮助您改善项目的代码,从而使您减少花在代码审查上的时间。

Please note that this article is an addition to existing documentation on UE projects analysis and doesn't serve the purpose of replacing it, largely borrowing the contents of the documentation.

请注意,本文是关于UE项目分析的现有文档的补充,并且不能替代它,而是在很大程度上借鉴了文档的内容。

PVS-Studio安装 (PVS-Studio Installation)

The easiest way to install the PVS-Studio analyser is to download its installation file. In order to be able to analyse projects created in UE, you need to select the following components when installing PVS-Studio: «C and C++ Compiler Monitoring» and «Integration with Microsoft Visual Studio (Visual C++/C#)». The last point is responsible for integrating the PVS-Studio plugin into the Visual Studio IDE, through which it is convenient to work with the error log and with the general settings of the analyser itself.

安装PVS-Studio分析仪最简单的方法是下载其安装文件 。 为了能够分析在UE中创建的项目,在安装PVS-Studio时需要选择以下组件:《 C和C ++编译器监视》和《与Microsoft Visual Studio集成(Visual C ++ / C#)》。 最后一点是将PVS-Studio插件集成到Visual Studio IDE中,通过它可以方便地处理错误日志和分析仪本身的常规设置。

To work fully with PVS-Studio, you need to enter a license. You can do this by opening Visual Studio (VS) IDE and entering the license in the 'PVS-Studio|Options...|Registration'. In VS 2019, the PVS-Studio menu has been moved to the 'Extensions' menu, the path to the license entry window looks like this: 'Extensions'|'PVS-Studio|Options...|Registration'. The license is available on our website.

要与PVS-Studio完全配合使用,您需要输入许可证。 您可以通过打开Visual Studio(VS)IDE并在“ PVS-Studio |选项... |注册”中输入许可证来执行此操作。 在VS 2019中,PVS-Studio菜单已移至“扩展”菜单,许可证输入窗口的路径如下所示:“扩展” |“ PVS-Studio |选项... |注册”。 该许可证可在我们的网站上找到 。

To build UE projects a custom UnrealBuildTool (UBT) program from Epic Games is used, not a standard build system, used in VS (MSBuild). In this regard, the PVS-Studio plugin isn't able to implement a usual scenario of checking C++/C# projects, created in VS: «PVS-Studio -> Check -> Current Project». There are several solutions to avoid this limitation.

为了构建UE项目,使用了Epic Games的自定义UnrealBuildTool(UBT)程序,而不是VS(MSBuild)中使用的标准构建系统。 在这方面,PVS-Studio插件无法实现在VS中创建的检查C ++ / C#项目的常规方案:“ PVS-Studio->检查->当前项目”。 有几种解决方案可以避免这种限制。

使用编译监控系统执行分析 (Performing Analysis with Compilation Monitoring System)

The first and the easiest way to check a UE project is to use the program C and C++ Compiler Monitoring (named Standalone.exe), located in the PVS-Studio installation directory. The principle of its work is that it monitors compiler processes that correspond to the target compiler (in this case, cl.exe) and gathers all needed information for preprocessing and further analysis of source files. After you have opened C and C++ Compiler Monitoring, use the menu «Tools» and choose the option «Analyze Your Files (C and C++)...». Press «Start Monitoring» and you'll see the window in the bottom left corner telling you that compiler calls monitoring is in process:

检查UE项目的第一种也是最简单的方法是使用位于PVS-Studio安装目录中的程序C和C ++编译器监视(名为Standalone.exe)。 它的工作原理是,它监视与目标编译器相对应的编译器进程(在本例中为cl.exe),并收集所有必需的信息以进行预处理和源文件的进一步分析。 打开C和C ++编译器监视后,使用菜单“工具”,然后选择选项“分析文件(C和C ++)...”。 按《开始监视》,您将在左下角看到一个窗口,告诉您编译器正在监视监视:

Picture 1

Next, build your UE project and press «Stop Monitoring».

接下来,建立您的UE项目并按《停止监视》。

After that, the analysis of compiled source files will start. The report of the warnings found will be shown in the window «Analyzer Output» of the program C and C++ Compiler Monitoring.

之后,将开始分析已编译的源文件。 找到的警告报告将显示在程序C和C ++编译器监视的“分析器输出”窗口中。

Similar compiler calls monitoring and subsequent analysis of detected files can be made using the CLMonitor.exe console program, located in the same folder, where PVS-Studio was installed. CLMonitor.exe has two operating modes: a server mode when launches of processes (corresponding to the target compiler) are monitored and a client mode (when source files, detected at the monitoring stage, are analysed, followed by a report of analysis results). In order to run CLMonitor.exe in the server mode, perform the following command:

可以使用CLMonitor.exe控制台程序进行类似的编译器调用监视和检测到的文件的后续分析,该程序位于安装PVS-Studio的同一文件夹中。 CLMonitor.exe有两种操作模式:监视进程启动(对应于目标编译器)的服务器模式和客户端模式(分析在监视阶段检测到的源文件,然后报告分析结果)的服务器模式。 。 为了在服务器模式下运行CLMonitor.exe,请执行以下命令:

CLMonitor.exe monitor

After that, build your UE project and perform the command below:

之后,构建您的UE项目并执行以下命令:

CLMonitor.exe analyze -l "c:\ptest.plog"

The «analyze» command runs CLMonitor.exe in the client mode and closes the running instance of this program, working in the server mode. After performing this command, CLMonitor.exe will start executing files analysis. A parameter for the "- l" option is a path to the file, in which the analyser's results will be written.

«analyze»命令在客户端模式下运行CLMonitor.exe,并以服务器模式关闭该程序的运行实例。 执行此命令后,CLMonitor.exe将开始执行文件分析。 “-l”选项的参数是文件的路径,将在其中写入分析器的结果。

使用键-StaticAnalyzer = PVSStudio执行分析 (Performing Analysis with the Key -StaticAnalyzer=PVSStudio)

A different and more convenient approach to analysing UE projects is a direct integration with the UBT built system. To do this, open the property window of your UE project in VS and choose «NMake» in the list «Configuration Properties». Add the -StaticAnalyzer=PVSStudio in text field of the property «Build Command Line». As an example, the value of the field «Build Command Line» might look as follows:

分析UE项目的一种不同且更方便的方法是与UBT内置系统直接集成。 为此,请在VS中打开UE项目的属性窗口,然后在“配置属性”列表中选择“ NMake”。 在属性“ Build Command Line”的文本字段中添加-StaticAnalyzer = PVSStudio。 例如,“ Build Command Line”字段的值可能如下所示:

C:\Program Files\Epic Games\UE_4.22\Engine\Build\BatchFiles\Build.bat"MyProject Win64 DebugGame-Project="$(SolutionDir)$(ProjectName).uproject"-WaitMutex -FromMsBuild -StaticAnalyzer=PVSStudio

It should be taken into account that when performing a project build, it will only be analysed, not built. The scenario in which a project is both built and analysed will be described below. It also should be noted that only those source files that have been changed since the last project build will be analysed. Changing of any included .h file is not a reason to perform the analysis during the next build. In order to perform full analysis, you need to add the same flag in the text field of the property «Rebuild All Command Line». Now when rebuilding the project, you'll get the result of analyzing the entire project.

应该考虑到,在执行项目构建时,只会进行分析,而不会进行构建。 下面将描述构建和分析项目的场景。 还应注意,将仅分析自上次项目构建以来已更改的那些源文件。 更改任何包含的.h文件不是在下一个构建过程中执行分析的原因。 为了执行完整的分析,您需要在«Rebuild All Command Line»属性的文本字段中添加相同的标志。 现在,在重建项目时,您将获得分析整个项目的结果。

通过修改包文件执行分析 (Performing the Analysis via Modification of Package files)

Now let's consider another scenario of the PVS-Studio analyser integrating into the UBT build system. While doing it, the analysis starts right after performing a project build/rebuild. In other words, you get both a built project and a file with analysis results. You might have noted that the field Build Command Line contains the path to the batch file Build.bat, which, in turns, contains instructions to run UBT with needed arguments. Build.bat runs in the very beginning of the build.

现在让我们考虑将PVS-Studio分析仪集成到UBT构建系统中的另一种情况。 这样做时,分析将在执行项目构建/重建后立即开始。 换句话说,您将同时获得一个已建项目和一个包含分析结果的文件。 您可能已经注意到,“构建命令行”字段包含批处理文件Build.bat的路径,而该文件又包含使用所需参数运行UBT的指令。 Build.bat在构建的最开始运行。

The point is to change the batch file so that it could first run UBT with standard build arguments and then, if a build successfully completes, run the same UBT, but already with an additional flag -StaticAnalyzer=PVSStudio. To implement the above scenario, you can change the batch file Build.bat. It's even better to create its copy named, for example, BuildAndAnalyze.bat. Here's what you need to do to implement the described scenario. Right after the popd command, insert the following instructions:

关键是更改批处理文件,以便它可以首先使用标准的构建参数运行UBT,然后,如果构建成功完成,则运行相同的UBT,但已经具有附加标志-StaticAnalyzer = PVSStudio。 要实现上述方案,您可以更改批处理文件Build.bat。 最好创建其副本,例如BuildAndAnalyze.bat。 这是实现上述方案所需的操作。 在popd命令之后,立即插入以下说明:

SET "UBT_ERR_LEVEL=!ERRORLEVEL!"
SET "NEED_TO_PERFORM_ANALYSIS"IF "!UBT_ERR_LEVEL!"=="0" (SET "NEED_TO_PERFORM_ANALYSIS=TRUE"
)IF "!UBT_ERR_LEVEL!"=="2" (SET "NEED_TO_PERFORM_ANALYSIS=TRUE"
)IF DEFINED NEED_TO_PERFORM_ANALYSIS (pushd "%~dp0\..\..\Source"ECHO Running static analysis ..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe %*-StaticAnalyzer=PVSStudio -DEPLOY popdSET "UBT_ERR_LEVEL=!ERRORLEVEL!"
)

If the flag -StaticAnalyzer=PVSStudio was previously installed in the Build Command Line field in the project 'Properties|Configuration Properties|NMake' settings, it has to be removed.

如果先前在项目“属性|配置属性| NMake”设置的“构建命令行”字段中安装了-StaticAnalyzer = PVSStudio标志,则必须将其删除。

The problem with this approach is that only files that were compiled during build will be analyzed. That is, you won't receive a report file with a full check of your project. In addition, any changes made to included .h files will also not be taken into account. Therefore, we cannot call this analysis incremental, as changes in the header files won't trigger the analysis during the next build. In this case, you can rebuild the project, getting the result of the analysis for the entire project. However, full build can take a long time, so you can follow this scenario: make a build, delete the cache file ActionHistory.bin, run the build with the flag -StaticAnalyzer=PVSStudio, restore the cache file. The ActionHistory.bin file contains information needed to perform incremental build as well as the history of running the analyzer for checked files.

这种方法的问题在于,将仅分析在构建过程中编译的文件。 也就是说,您将不会收到包含项目完整检查的报告文件。 此外,也不会考虑对包含的.h文件所做的任何更改。 因此,我们不能将此分析称为增量分析,因为头文件中的更改不会在下一个构建期间触发分析。 在这种情况下,您可以重建项目,以获取整个项目的分析结果。 但是,完全构建可能需要很长时间,因此您可以遵循以下方案:进行构建,删除缓存文件ActionHistory.bin,使用标志-StaticAnalyzer = PVSStudio运行该构建,还原缓存文件。 ActionHistory.bin文件包含执行增量构建所需的信息以及运行分析器以检查文件的历史记录。

At a first glance, this scenario may not seem the easiest, so we'll provide a complete set of instructions on how you can change the original Build.bat file. It is worth noting that such changes are only relevant to Unreal Engine version 4.21 and later. After the setlocal enabledelayedexpansion command, declare the following variables:

乍一看,这种情况似乎并不是最简单的,所以我们将提供有关如何更改原始Build.bat文件的完整说明。 值得注意的是,此类更改仅与Unreal Engine 4.21及更高版本有关。 在setlocal enabledelayedexpansion命令之后,声明以下变量:

SET PROJECT_NAME=%1%
SET PLATFORM=%2%
SET UPROJECT_FILE=%~5SET ACTIONHISTORY_FOLDER=%UPROJECT_FILE%\..\Intermediate\Build\%PLATFORM%\%PROJECT_NAME%
SET ACTION_HISTORY=ActionHistory.bin
SET ACTION_HISTORY_BAC=%ACTION_HISTORY%.bac
SET ACTIONHISTORY_PATH="%ACTIONHISTORY_FOLDER%\%ACTION_HISTORY%"
SET ACTIONHISTORY_BAC_PATH="%ACTIONHISTORY_FOLDER%\%ACTION_HISTORY_BAC%"

Right after the popd instruction, insert these commands:

在popd指令之后,插入以下命令:

SET "UBT_ERR_LEVEL=!ERRORLEVEL!"
SET "NEED_TO_PERFORM_ANALYSIS="IF "!UBT_ERR_LEVEL!"=="0" (SET "NEED_TO_PERFORM_ANALYSIS=TRUE"
)IF "!UBT_ERR_LEVEL!"=="2" (SET "NEED_TO_PERFORM_ANALYSIS=TRUE"
)
IF DEFINED NEED_TO_PERFORM_ANALYSIS (pushd "%~dp0\..\..\Source"ECHO Running static analysisIF EXIST %ACTIONHISTORY_PATH% (ECHO Copying %ACTION_HISTORY% to %ACTION_HISTORY_BAC%COPY %ACTIONHISTORY_PATH% %ACTIONHISTORY_BAC_PATH%ECHO Removing %ACTION_HISTORY%: %ACTIONHISTORY_PATH%DEL  %ACTIONHISTORY_PATH%)..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe %* -StaticAnalyzer=PVSStudio -DEPLOY popdSET "UBT_ERR_LEVEL=!ERRORLEVEL!"IF EXIST %ACTIONHISTORY_BAC_PATH% (ECHO Recovering %ACTION_HISTORY%COPY %ACTIONHISTORY_BAC_PATH% %ACTIONHISTORY_PATH%ECHO Removing %ACTION_HISTORY_BAC%: %ACTIONHISTORY_BAC_PATH%DEL  %ACTIONHISTORY_BAC_PATH%)
)

Note, that variables PROJECT_NAME, PLATFORM and UPROJECT_FILE, needed for correct determination of the path to the cache file, get their values from the arguments of the Build.bat's command line. If you have a different order of these arguments, you have to appropriately change initialization of the three variables, described above.

请注意,正确确定缓存文件路径所需的变量PROJECT_NAME,PLATFORM和UPROJECT_FILE是从Build.bat命令行的参数中获取其值的。 如果这些参数的顺序不同,则必须适当地更改上述三个变量的初始化。

通过UBT修改进行增量项目分析 (Incremental Project Analysis via UBT Modification)

PVS-Studio is able to work in the incremental analysis mode. Incremental analysis is meant to check only those files that have been changed since the last build. In the incremental analysis mode, PVS-Studio is automatically run on a developer's computer in the background mode right after code compilation and analyzes all modified files. You can find a more detailed guide on using PVS-Studio in the incremental analysis mode in our documentation.

PVS-Studio可以在增量分析模式下工作。 增量分析旨在仅检查自上次构建以来已更改的那些文件。 在增量分析模式下,PVS-Studio在代码编译后立即在后台模式下自动在开发人员的计算机上运行,​​并分析所有修改的文件。 您可以在我们的文档中找到有关在增量分析模式下使用PVS-Studio的更详细的指南。

With the implementation of the incremental analysis mode for UE projects, everything is again a bit more complicated than in a standard scenario. In this case, to be able to perform the incremental analysis (taking into account changes in included .h files), you'll have to introduce edits in the build UBT system yourself. To do this, get access to the UE repository on github.com and clone it to your machine. To further customize the cloned repository, you'll need to complete the steps, listed in the section «Getting up and running », subsection «Windows». You can find this section on the front page of the official UE repository. Once you've set up your repository, you can start making changes in UBT. To do this, follow this path to the cloned repository: \UnrealEngine\Engine\Source\Programs\UnrealBuildTool. Open solution UnrealBuildTool.sln and find the file PVSToolChain.cs in Solution Explorer. In this file, add the following lines of code in the class PVSApplicationSettings:

通过为UE项目实施增量分析模式,一切都比标准方案中的要复杂得多。 在这种情况下,为了能够执行增量分析(考虑到包含的.h文件中的更改),您必须自己在构建UBT系统中引入编辑。 为此,请访问 github.com上的UE存储库并将其克隆到您的机器上。 要进一步自定义克隆的存储库,您需要完成“启动和运行”部分的“ Windows”小节中列出的步骤。 您可以在官方UE信息库的首页上找到此部分。 设置存储库后,即可开始在UBT中进行更改。 为此,请遵循以下路径进入克隆的存储库:\ UnrealEngine \ Engine \ Source \ Programs \ UnrealBuildTool。 打开解决方案UnrealBuildTool.sln,然后在解决方案资源管理器中找到文件PVSToolChain.cs。 在此文件中,将以下代码行添加到类PVSApplicationSettings中:

/// <summary>
/// Whether need incremental analysis or not
/// </summary>
public bool IncrementalAnalysis;

This line of code enables the IncrementalAnalysis option to be deserialized from the PVS-Studio settings files. Don't forget to enable the PVS-Studio incremental analysis mode itself. To do this, in VS open «Extensions» in the main menu, submenu «PVS-Studio», «Analysis after Build (Modified Files Only)», «Enabled». Now add the following lines of code right after declaration of the variable BaseFileName:

此行代码允许从PVS-Studio设置文件反序列化IncrementalAnalysis选项。 不要忘记启用PVS-Studio增量分析模式本身。 为此,在VS中,打开主菜单中的“扩展”,子菜单“ PVS-Studio”,“构建后分析(仅修改文件)”,“启用”。 现在,在声明变量BaseFileName之后立即添加以下代码行:

// Get pvslog file
FileReference OutputFileLocation = FileReference.
Combine(OutputDir, BaseFileName + ".pvslog");
FileItem OutputFileItem = FileItem.GetItemByFileReference(OutputFileLocation);
if (ApplicationSettings.IncrementalAnalysis && OutputFileItem.Exists)
{// Get object fileFileReference ObjectFileLocation = FileReference.Combine(OutputDir, BaseFileName + ".obj");FileItem ObjectFileItem = FileItem.GetItemByFileReference(ObjectFileLocation);if (ObjectFileItem.Exists && (ObjectFileItem.LastWriteTimeUtc < OutputFileItem.LastWriteTimeUtc)){continue;}
}

Then remove previous declarations of variables OutputFileLocation and OutputFileItem below.

然后在下面删除变量OutputFileLocation和OutputFileItem的先前声明。

While building the UE project, an object .obj file is generated for each source .cpp file. This incremental analysis is all about checking only those source .cpp files for which the date of creation/modification of their object file is later than the one of the .pvslog report file. A separate .pvslog file is generated for each source file, in the future all .pvslog files will be merged in one final .pvslog). Once you've made the above changes, build UBT and copy the newly built binary file to the location of the original UBT.

在构建UE项目时,将为每个源.cpp文件生成一个对象.obj文件。 此增量分析仅涉及检查源.cpp文件,这些源.cpp文件的对象文件的创建/修改日期晚于.pvslog报告文件之一。 每个源文件都会生成一个单独的.pvslog文件,以后所有的.pvslog文件都将合并到一个最终的.pvslog文件中。 完成上述更改后,构建UBT,然后将新建的二进制文件复制到原始UBT的位置。

Now it's all ready, you'll be receiving a report log when performing the build of your UE project, containing analyzer's results only for compiled source files. Keep in mind that such modification of UBT makes sense only if you have modified the Build.bat file in such a way that it performed removing of the cache file ActionHistory.bin (detailed description of this scenario was given above). To disable the incremental analysis mode, just install the option «Analysis after Build (Modified Files Only)» described above in the mode «Disabled».

现在已经准备就绪,在执行UE项目的构建时,您将收到报告日志,其中仅包含分析器针对已编译源文件的结果。 请记住,仅当您以以下方式修改Build.bat文件以执行删除高速缓存文件ActionHistory.bin时,对UBT的这种修改才有意义(上面已给出了此方案的详细说明)。 要禁用增量分析模式,只需在“禁用”模式下安装上述“构建后分析(仅修改文件)”选项即可。

Let me remind you once again: if you installed the flag -StaticAnalyzer=PVSStudio in the field Build Command Line in the settings of the project 'Properties|Configuration Properties|NMake', it has to be removed in this scenario.

让我再次提醒您:如果在项目“属性|配置属性| NMake”的设置中的“构建命令行”字段中安装了-StaticAnalyzer = PVSStudio标志,则在这种情况下必须将其删除。

打开分析器报告文件并将其自动加载到Visual Studio中 (Opening the Analyzer Report File and its Automatic Loading into Visual Studio)

By default when performing the UE project analysis, a report file won't be shown in the PVS-Studio window in VS. It's just stored relatively to the project folder by the following path: \YouProject\Saved\PVS-Studio\. To open this file in VS, you need to use the following command: 'PVS-Studio|Open/Save|Open Analysis Report' and select the 'Unparsed output' file type. You can also open the file report in the program C and C++ Compiler Monitoring, by using the following command: 'File|Open PVS-Studio Log' and also choose the file type 'Unparsed output'.

默认情况下,执行UE项目分析时,VS中的PVS-Studio窗口中不会显示报告文件。 它只是通过以下路径相对于项目文件夹存储:\ YouProject \ Saved \ PVS-Studio \。 要在VS中打开此文件,您需要使用以下命令:“ PVS-Studio |打开/保存|打开分析报告”,然后选择“未分析的输出”文件类型。 您还可以使用以下命令在程序C和C ++编译器监视中打开文件报告:'File | Open PVS-Studio Log',还选择文件类型'Unparsed output'。

There's another more convenient option to open the analysis report log, which is its automatic loading in VS. In order for it to automatically load into the PVS-Studio window in VS after the analysis is complete, you need to enable the appropriate option: 'PVS-Studio|Options|Specific Analyzer Settings|Save/Load (analyzer report)|AutoloadUnrealEngineLog'.

还有一个更方便的选项来打开分析报告日志,这是它在VS中的自动加载。 为了使它在分析完成后自动加载到VS中的PVS-Studio窗口中,您需要启用适当的选项:“ PVS-Studio |选项|特定分析仪设置|保存/加载(分析仪报告)| AutoloadUnrealEngineLog” 。

下载并尝试PVS-Studio (Download and Try PVS-Studio)

As the author of this article, as well as one of those people who is directly working on the implementation and support of PVS-Studio's functionality related to the analysis of projects, built on the basis of the UE engine, I am ready to help readers. If you're having trouble using PVS-Studio with your UE project or have any questions after reading this article, I'd be happy to chat with you. Write to our support, I'll get mails on UE and related issues. Thank you for your attention.

作为本文的作者,以及直接基于UE引擎构建与项目分析相关的PVS-Studio功能的实现和支持的人员之一,我随时准备帮助读者。 如果您在UE项目中使用PVS-Studio时遇到问题,或者在阅读本文后有任何疑问,我们将很高兴与您聊天。 写信给我们的支持,我将收到有关UE和相关问题的邮件。 感谢您的关注。

附加链接 (Additional Links)

  1. Andrey Karpov. A Long-Awaited Check of Unreal Engine 4. (April 14, 2014)

    安德烈·卡波夫(Andrey Karpov)。 期待已久的虚幻引擎检查4 。 (2014年4月14日)

  2. Paul Eremeev, Svyatoslav Razmyslov. How the PVS-Studio Team Improved Unreal Engine's Code. (June 20, 2015)

    保罗·埃雷梅耶夫(Paul Eremeev),斯维亚托斯拉夫·拉兹米洛夫(Svyatoslav Razmyslov) PVS-Studio团队如何改进虚幻引擎的代码 。 (2015年6月20日)

  3. Andrey Karpov. Static analysis as part of the development process in Unreal Engine. (June 27, 2017)

    安德烈·卡波夫(Andrey Karpov)。 静态分析是虚幻引擎开发过程的一部分 。 (2017年6月27日)

翻译自: https://habr.com/en/company/pvs-studio/blog/466477/

pvs-stdio ue4


http://chatgpt.dhexx.cn/article/fTFkdyl5.shtml

相关文章

周志华与「深度森林」

关注网易智能&#xff0c;聚焦AI大事件&#xff0c;读懂下一个大时代&#xff01; 近日于深圳举办的2018中国人工智能大会上&#xff0c;AI领域的顶级大牛、南京大学人工智能学院院长、ACM/AAAI/IEEE Fellow周志华发表了演讲&#xff0c;并在会后接受了网易智能等媒体的采访&am…

深度森林:探索深度神经网络以外的方法

挑战深度学习 《深度森林&#xff1a;探索深度神经网络以外的方法》 阅读量&#xff1a; 1306 收藏本文 深度神经网络的巨大成功掀起了一股深度学习热潮。 或许&#xff0c;这股热潮有些“太热”了。 就在这周&#xff0c;南京大学机器学习与数据挖掘研究所&#xff08;LAMDA&a…

【深度森林算法实践】分类与回归

1 Review&#x1f496; 不可否认&#xff0c;深度森林的提出很大程度是受深度学习算法启发。现如今&#xff0c;深度学习算法在诸多领域都展示出了傲人的实力&#xff0c;周志华教授作为国内集成学习领域的先驱&#xff0c;则在借鉴了深度学习算法结构的基础上&#xff0c;提出…

深度——强化学习、深度森林

Sutton’sTD&#xff08;0&#xff09;算法&#xff1a;考虑当前回报和下一状态的估计值&#xff0c;它的更新公式 &#xff1a; • Q-learing算法&#xff1a;它和Sutton’sTD(0)算法类似&#xff0c;只是将动作集A也考虑进来。 定义动作价值函数Q&#xff08;s,a&#xff09;…

周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈

翻译 | 林椿眄 出品 | AI科技大本营&#xff08;公众号ID&#xff1a;rgznai100&#xff09; 【AI科技大本营导读】 互联网公司每天都面临着处理大规模机器学习应用程序的问题&#xff0c;因此我们需要一个可以处理这种超大规模的日常任务的分布式系统。最近&#xff0c;以…

在Python 3中使用深度森林(Deep Forest)进行分类

深度森林(Deep Forest)是周志华教授和冯霁博士在2017年2月28日发表的论文《Deep Forest: Towards An Alternative to Deep Neural Networks》中提出来的一种新的可以与深度神经网络相媲美的基于树的模型&#xff0c;其结构如图所示。 gcForest.png 文中提出的多粒度级联森林(Mu…

9大数据集6大度量指标完胜,周志华等提出深度森林处理多标签学习

2019-11-25 11:01:57 选自arXiv 机器之心编译参与&#xff1a;路雪、一鸣 近日&#xff0c;南大周志华等人首次提出使用深度森林方法解决多标签学习任务。该方法在 9 个基准数据集、6 个多标签度量指标上实现了最优性能。 在多标签学习中&#xff0c;每个实例都有多个标签&am…

深度森林DF21、deep forest、gcForest

文章目录 DF21的优势DF21的可以用来干什么对标算法[^1] DF21的优势 DF21是周志华团队于2021年2月1日推出的深度森林开源库&#xff0c;其优势在于超参少、训练效率高1。 DF21的可以用来干什么 DF21可以用来进行分类和回归2。 对标算法2 搜狐自媒体网文&#xff1a;周志华团…

如何评价周志华深度森林模型

这篇文章背后的思路实际上是这样的&#xff1a; DNN&#xff08;或者说 MLP&#xff09;其实就是堆起来的广义线性模型&#xff08;比如 logistic&#xff0c;但也有其他激活函数&#xff09;。它能够自动发现特征与标签之间的非线性关系&#xff0c;当决策边界非线性&#xf…

gcForest分布式深度森林及其在套现欺诈自动检测中的应用

分布式深度森林及其在套现欺诈自动检测中的应用 摘要 互联网企业每天面对处理大规模机器学习应用的请求,需要一个能够处理超大数据任务的分布式系统.深度森林是最近提出的一个利用树作为组件深度学习框架,在各种领域取得不错的结果.然而并没有在超大规模数据任务上测试.在这项…

【论文解读】关于深度森林的一点理解

2017年年初&#xff0c;南京大学周志华老师上传了一篇名为&#xff1a;Deep Forest&#xff1a;Towards An Alternative to Deep Neural Networks的论文&#xff0c;一石激起千层浪&#xff0c;各大媒体纷纷讨论着&#xff0c;这似乎意味着机器学习的天色要变&#xff0c;实则不…

随机森林算法的扩展-深度森林(deep forest)

深度学习最大的贡献&#xff0c;个人认为就是表征学习&#xff08;representation learning&#xff09;&#xff0c;通过端到端的训练&#xff0c;发现更好的features&#xff0c;而后面用于分类&#xff08;或其他任务&#xff09;的输出function&#xff0c;往往也只是普通的…

多标签学习与深度森林学习笔记

周志华老师团队Multi-Label Learning with Deep Forest (MLDF)报道很多&#xff0c;各大机器学习平台也都就这篇文章的亮点给出了分析。近日在准备组会报告时较为详细地拜读了一下&#xff0c;也由此简单了解了一下多标签学习的相关内容。 正如论文作者所述&#xff0c;MLDF的…

论文阅读:Deep forest/深度森林/gcForest

最近组会汇报了这篇文章&#xff0c;简单把思想梳理下来了&#xff0c;对了搜索深度森林的时候可能会看到Deep Forest: Towards an Alternative to Deep Neural Networks&#xff0c;这两篇文章的内容基本上是一致的&#xff0c;只在叙述方面有一些很小的不同。 下面是我做的p…

【冰糖Python】深度森林 DeepForest

此文为记录DeepForest的简单使用 原文《Deep Forest: Towards an Alternative to Deep Neural Networks》 “A key advantage of deep forest is its adaptive model complexity depending on the dataset. The default setting on hyper-parameters enables it to perform r…

使用深度森林(Deep Forest)进行分类-Python

一、什么是深度森林&#xff1f; 传统DNN的不足&#xff1a; 1、需要大量的数据集来训练&#xff1b; 2、DNN的模型太复杂&#xff1b; 3、DNN有着太多的超参数 gcForest的优势&#xff1a; 1、更容易训练&#xff1b; 2、性能更佳&#xff1b; 3、效率高且可扩展、支持…

深度森林浅析

深度森林 深度学习最大的贡献是表征学习&#xff08;representation learning&#xff09;&#xff0c;通过端到端的训练&#xff0c;发现更好的features&#xff0c;而后面用于分类&#xff08;或其他任务&#xff09;的输出function&#xff0c;往往也只是普通的softmax&…

深度森林原理及实现

目录 背景 级联森林 多粒度扫描 代码 总结 背景 深度森林(Deep Forest)是周志华教授和冯霁博士在2017年2月28日发表的论文《Deep Forest: Towards An Alternative to Deep Neural Networks》中提出来的一种新的可以与深度神经网络相媲美的基于树的模型&#xff0c;其结构…

论文阅读:深度森林

论文地址&#xff1a;https://arxiv.org/pdf/1702.08835.pdf 相关代码&#xff1a;https://github.com/kingfengji/gcForest 深度森林是南大周志华老师前两年提出的一种基于随机森林的深度学习模型。 当前的深度学习模型大多基于深度学习神经网络&#xff08;DNN&#xff09;…

Deep Forest(gcforest)通俗易懂理解

DeepForest(gcforest)深度森林介绍 1.背景介绍 当前的深度学习模型主要建立在神经网络上&#xff0c;即可以通过反向传播训练的多层参数化可微分非线性模块&#xff0c;周志华老师希望探索深度学习模型的新模式&#xff0c;探索不可微模块构建深度模型的可能性。从而提出了一…