包含此页的版本:
不含此页的版本:
要定义自己的规则,以处理项目中的分析器引发的各种警告和错误,可以创建规则集文件。有关如何创建自定义规则集的详细信息,请参阅有关如何创建自定义规则集的 Microsoft Visual Studio 文档。
在 Assets 根文件夹中,放置名为 Default.rulesset 的规则集文件。在 Default.ruleset 中定义的规则适用于所有预定义程序集 (例如Assembly-CSharp.dll)以及使用 .asmdef 文件生成的所有程序集。
要覆盖预定义程序集的 Default.ruleset 中的规则,请在根文件夹中创建一个 .ruleset 文件,其名称为[PredefinedAssemblyName].ruleset.例如,中的规则Assembly-CSharp.ruleset应用于Assembly-CSharp.dll.根文件夹中只允许以下 .ruleset 文件:
Default.rulesetAssembly-CSharp.rulesetAssembly-CSharp-firstpass.rulesetAssembly-CSharp-Editor.rulesetAssembly-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.rulesetfile 定义了以下规则:
将规则集文件添加到项目后,重新导入位于应应用规则的程序集中的任何脚本。这会强制 Unity 使用新的规则集文件重新编译程序集。重新编译后,两条消息将出现在控制台窗口Unity 编辑器窗口,显示 Unity 或您自己的脚本生成的错误、警告和其他消息。更多信息
请参阅术语表:
Assets\Subfolder\RethrowError.cs(15,19): error ERP021: Incorrect exception propagation. Use throw; instead.
Assets\RethrowError.cs(15,19): error ERP021: Incorrect exception propagation. Use throw; instead.
请注意,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: Suspicious exception handling: only e.Message is observed in exception block.
Assets\Subfolder\RethrowError.cs(15,19): info ERP021: Incorrect exception propagation. Use throw; instead.
Assets\RethrowError.cs(15,19): error ERP021: Incorrect exception propagation. Use throw; instead.
中的规则Default.ruleset仍适用于Assets\RethrowError.cs,但它们不再适用于Assets\Subfolder\RethrowError.cs,因为Hello.ruleset覆盖它们。
有关所有允许的规则集作文件的详细信息,请参阅有关使用代码分析规则集编辑器的 Visual Studio 文档。