プロジェクトのアナライザーが発行するさまざまな警告やエラーを処理する方法を独自のルールで定義するには、ルールセットファイルを作成します。カスタムルールセットの作成方法の詳細については、カスタムルールセットの作成方法に関する Microsoft Visual Studio のドキュメントを参照してください。
Assets ルートフォルダーに、Default.ruleset という名前のルールセットファイルを配置します。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.rulesetUnity でルールセットファイルをテストするには、以下を行います。
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 は新しいルールセットファイルを使用してアセンブリを再コンパイルします。再コンパイルの後、コンソールウィンドウに以下の 2 つのメッセージが表示されます。
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 にも適用されますが、Hello.ruleset 内のルールはオーバーライドされるため、Assets\Subfolder\RethrowError.cs には適用されなくなります。
許可されているすべてのルールセットアクションファイルの詳細については、Visual Studio のドキュメントでコード分析ルールセットエディターの使用を参照してください。