ルール セットをカスタマイズする

コード分析でプロジェクトの特定のニーズを満たすために、カスタム ルール セットを作成できます。

既存のルール セットからカスタム ルール セットを作成する

カスタム ルール セットを作成するには、ルール セット エディターで組み込みのルール セットを開きます。 そこから、特定のルールを追加または削除したり、ルールに違反したときに実行されるアクション (警告やエラーの表示など) を変更したりできます。

  1. ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] を選択します。

  2. [プロパティ] ページで [コード分析] タブを選択します。

  3. [アクティブな規則] ドロップダウン リストで、次のいずれかを行います。

    • カスタマイズするルール セットを選択します。

      - または -

    • [<参照>] を選んで、一覧にない、既存の規則セットを指定します。

  4. [開く] を選択して、ルール セット エディターでルールを表示します。

Note

.NET Core または .NET Standard プロジェクトがある場合、プロジェクトのプロパティの [コード分析] タブで同じオプションがサポートされていないため、プロセスが少し異なります。 手順に従って、定義済みのルール セットをプロジェクトにコピーし、アクティブなルール セットとして設定します。 ルール セットをコピーしたら、ソリューション エクスプローラーからそれを開いて、Visual Studio のルール セット エディターで編集できます。

新しいルール セットを作成する

新しいルール セット ファイルは、[新しいファイル] ダイアログから作成できます。

  1. [ファイル]>[新規作成]>[ファイル] の順に選択するか、Ctrl+N キーを押します。

  2. [新しいファイル] ダイアログ ボックスで、左側の [全般] カテゴリを選択し、[コード分析規則セット] を選択します。

  3. [Open (開く)] を選択します。

    ルール セット エディターに新しい .ruleset ファイルが開きます。

複数のルール セットからカスタム ルール セットを作成する

Note

次の手順は、[コード分析] プロパティ タブの同じ機能がサポートされていない .NET Core または .NET Standard プロジェクトには適用されません。

  1. ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] を選択します。

  2. [プロパティ] ページで [コード分析] タブを選択します。

  3. [アクティブな規則] から [<複数の規則セットを選択する>] を選びます。

  4. [規則セットの追加と削除] ダイアログ ボックスで、新しいルール セットに含めるルール セットを選択します。

    Add or remove rule sets dialog box

  5. [名前を付けて保存] を選択し、.ruleset ファイルの名前を入力して、[保存] を選択します。

    [この規則セットを実行] の一覧で、新しいルール セットが選択されます。

  6. [開く] を選択して、ルール セット エディターで新しいルール セットを開きます。

ルールの優先順位

  • ルール セットに重大度が異なる同じルールが 2 回以上示されていると、コンパイラはエラーを生成します。 たとえば次のような点です。

    <RuleSet Name="Rules for ClassLibrary21" Description="Code analysis rules for ClassLibrary21.csproj." ToolsVersion="15.0">
       <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
         <Rule Id="CA1021" Action="Warning" />
         <Rule Id="CA1021" Action="Error" />
       </Rules>
    </RuleSet>
    
  • ルール セットに "同じ" 重大度の同じルールが 2 回以上示されている場合、[エラー一覧] に次の警告が表示されることがあります。

    CA0063: 規則セット ファイル '[お使いのファイル].ruleset' か、またはその依存先の規則セット ファイルの 1 つを読み込めませんでした。 ファイルが規則セットのスキーマに準拠していません。

  • Include タグを使用してルール セットに子ルール セットが含まれており、子と親のルール セットに重大度が異なる同じルールが示されている場合は、親ルール セットの重大度が優先されます。 たとえば次のような点です。

    <!-- Parent rule set -->
    <?xml version="1.0" encoding="utf-8"?>
    <RuleSet Name="Rules for ClassLibrary21" Description="Code analysis rules for ClassLibrary21.csproj." ToolsVersion="15.0">
       <Include Path="classlibrary_child.ruleset" Action="Default" />
       <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
         <Rule Id="CA1021" Action="Warning" /> <!-- Overrides CA1021 severity from child rule set -->
       </Rules>
    </RuleSet>
    
    <!-- Child rule set -->
    <?xml version="1.0" encoding="utf-8"?>
    <RuleSet Name="Rules from child" Description="Code analysis rules from child." ToolsVersion="15.0">
       <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
         <Rule Id="CA1021" Action="Error" />
       </Rules>
    </RuleSet>
    

名前と説明

エディターで開いているルール セットの表示名を変更するには、メニュー バーで [表示]>[プロパティ ウィンドウ] の順に選択して、[プロパティ] ウィンドウを開きます。 [名前] ボックスに表示名を入力します。 また、ルール セットの説明を入力することもできます。

次のステップ

ルール セットを用意できたので、次に、ルールを追加または削除したり、ルール違反の重大度を変更したりして、ルールをカスタマイズします。