要定义您自己的规则,以处理项目中分析器引发的各种警告和错误,您可以创建规则集文件。有关如何创建自定义规则集的更多信息,请参阅 Microsoft 的 Visual Studio 文档,了解如何创建自定义规则集。
在 Assets 根文件夹中,放置一个名为 Default.ruleset 的规则集文件。您在 Default.ruleset 中定义的规则适用于所有预定义程序集(例如 Assembly-CSharp.dll
)以及使用 .asmdef 文件构建的所有程序集。
要覆盖预定义程序集的 Default.ruleset 中的规则,请在根文件夹中创建一个名为 [PredefinedAssemblyName].ruleset
的 .ruleset 文件。例如,Assembly-CSharp.ruleset
中的规则适用于 Assembly-CSharp.dll
中的代码。根文件夹中只允许这些 .ruleset 文件。
Default.ruleset
Assembly-CSharp.ruleset
Assembly-CSharp-firstpass.ruleset
Assembly-CSharp-Editor.ruleset
Assembly-CSharp-Editor-firstpass.ruleset
要在 Unity 中测试规则集文件,请按照以下步骤操作
RethrowError.cs
的副本。<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description=" " ToolsVersion="10.0">
<Rules AnalyzerId="ErrorProne.NET.CodeAnalyzers" RuleNamespace="ErrorProne.NET.CodeAnalyzers">
<Rule Id="ERP021" Action="Error" />
<Rule Id="EPC12" Action="None" />
</Rules>
</RuleSet>
Default.ruleset
文件定义以下规则:
将规则集文件添加到项目后,重新导入位于应应用规则的程序集中的任何脚本。这将强制 Unity 使用新的规则集文件重新编译程序集。重新编译后,将在控制台窗口Unity 编辑器窗口,显示 Unity 或您自己的脚本生成的错误、警告和其他消息。 更多信息
参见词汇表中显示两条消息。
Assets\Subfolder\RethrowError.cs(15,19): error ERP021: 异常传播不正确。请使用 throw; 代替。
Assets\RethrowError.cs(15,19): error ERP021: 异常传播不正确。请使用 throw; 代替。
请注意,Unity 将 Default.ruleset 中定义的规则应用于 Assets/RethrowError.cs
和 Assets/Subfolder/RethrowError.cs
。
在 Assets/Subfolder 中,创建一个 .ruleset 文件,并为其命名(在本例中为 exampleHello.ruleset
)。
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description=" " ToolsVersion="10.0">
<Rules AnalyzerId="ErrorProne.NET.CodeAnalyzers" RuleNamespace="ErrorProne.NET.CodeAnalyzers">
<Rule Id="ERP021" Action="Info" />
<Rule Id="EPC12" Action="Info" />
</Rules>
</RuleSet>
这个新的 Hello.ruleset
文件告诉 Unity 将 EPC12 和 ERP021 都打印到控制台,而不将其视为警告或错误。
Unity 再次编译项目后,控制台窗口中将显示以下消息:
Assets\Subfolder\RethrowError.cs(14,23): info EPC12: 可疑异常处理:在异常块中仅观察到 e.Message。
Assets\Subfolder\RethrowError.cs(15,19): info ERP021: 异常传播不正确。请使用 throw; 代替。
Assets\RethrowError.cs(15,19): error ERP021: 异常传播不正确。请使用 throw; 代替。
Default.ruleset
中的规则仍然适用于 Assets\RethrowError.cs
,但不再适用于 Assets\Subfolder\RethrowError.cs
,因为 Hello.ruleset
中的规则覆盖了它们。
有关所有允许的规则集操作文件的更多信息,请参阅 Visual Studio 文档,了解如何使用代码分析规则集编辑器。