ルールセットファイルの作成
Create a ruleset file to control how Roslyn analyzers handle warnings and errors in your project.
読み終わるまでの所要時間 6 分最終更新 1ヶ月前
プロジェクトのアナライザーが発行するさまざまな警告やエラーを処理する方法を独自のルールで定義するには、ルールセットファイルを作成します。カスタムルールセットの作成方法の詳細については、カスタムルールセットの作成方法に関する Microsoft Visual Studio のドキュメントを参照してください。
Assets ルートフォルダーに、Default.ruleset という名前のルールセットファイルを配置します。Default.ruleset で定義するルールは、定義済みのすべてのアセンブリ ( など)、および .asmdef ファイルを使用して構築されたすべてのアセンブリに適用されます。
Assembly-CSharp.dllDefault.ruleset のルールを定義済みのアセンブリにオーバーライドするには、ルートフォルダーに .ruleset ファイルを作成し、 という名前にします。例えば、 でのルールは、 のコードに適用されます。これらの .ruleset ファイルのみがルートフォルダー内で許可されます。
[PredefinedAssemblyName].rulesetAssembly-CSharp.rulesetAssembly-CSharp.dllDefault.rulesetAssembly-CSharp.rulesetAssembly-CSharp-firstpass.rulesetAssembly-CSharp-Editor.rulesetAssembly-CSharp-Editor-firstpass.ruleset
ワークフロー: Unity でルールセットファイルをテストする
Unity でルールセットファイルをテストするには、以下を行います。
ステップ 1: ルールセットファイルの設定
-
プロジェクトの Assets フォルダーの中に “Subfolder” というサブフォルダーを作成します。
-
Subfolder 内で以下の処理を実行します。
- .asmdef ファイルを新しく作成します。
- の複製を保存します。
RethrowError.cs
-
以下のコードを使用して、Assets の中に Default.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="Error" /> <Rule Id="EPC12" Action="None" /> </Rules></RuleSet>
Default.ruleset- EPC12 の抑制。疑わしい例外処理についての警告です。
- ERP021 の発生。不正な例外伝播に関する警告です。
ステップ 2: プロジェクトの再ロード
プロジェクトにルールセットファイルを追加した後、ルールを適用するアセンブリ内にあるスクリプトをすべて再インポートします。これを行うと、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.csAssets/Subfolder/RethrowError.csステップ 3: カスタムルールセットの追加
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>
この新しい ファイルは、Unity に EPC12 と ERP021 の両方を警告やエラーとして扱わずに、コンソールに出力するように指示します。
Hello.rulesetUnity がプロジェクトを再度コンパイルすると、コンソールウィンドウに以下のメッセージが表示されます。
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.rulesetAssets\RethrowError.csHello.rulesetAssets\Subfolder\RethrowError.cs許可されているすべてのルールセットアクションファイルの詳細については、Visual Studio のドキュメントでコード分析ルールセットエディターの使用を参照してください。