CA1506:クラス結合度を大きくしすぎないでください

プロパティ
ルール ID CA1506
Title クラス結合度を大きくしすぎないでください
[カテゴリ] 保守容易性
修正が中断ありか中断なしか あり
既定のしきい値 型: 95 その他のシンボル: 40
.NET 8 では既定で有効 いいえ

原因

型、メソッド、フィールド、プロパティ、またはイベントは、他の多くの型と結合されます。 コンパイラによって生成される型は、このメトリックから除外されています。

規則の説明

この規則は、型、メソッド、フィールド、プロパティ、またはイベントに含まれる一意の型参照の数をカウントすることによって、クラス結合度を計測します。 既定の結合しきい値は、型の場合は 95、その他のシンボルの種類の場合は 40 で、 しきい値は設定可能です

大きなクラス結合度を使用する型、メソッドおよびその他のシンボルはメンテナンスが困難になる場合があります。 結合度が低く、高い凝集度を示す型、メソッドおよびその他のシンボルを用意することを推奨します。

違反の修正方法

この違反を修正するには、型またはメソッドを再設計して、結合される型の数を減らしてみてください。

どのようなときに警告を抑制するか

型またはメソッドが、他の型に対する依存関係の数が多いにもかかわらずメンテナンス可能と見なされる場合は、この警告を抑制できます。

注意

次のすべてに該当する場合、このルールから擬陽性の警告が表示される場合があります。

  • Visual Studio 2022 バージョン 17.5 以降を NET SDK の古いバージョン (.NET 6 以前) で使用している場合。
  • .NET 6 SDK またはそれ以前のバージョンのアナライザー パッケージ (Microsoft.CodeAnalysis.FxCopAnalyzers など) のアナライザーを使用している場合。

擬陽性は、C# コンパイラの破壊的変更が原因です。 擬陽性警告の修正プログラムを含む新しいアナライザーの使用を検討してください。 Microsoft.CodeAnalysis.NetAnalyzers バージョン 7.0.0-preview1.22464.1 以降にアップグレードするか、.NET 7 SDK のアナライザーを使用します。

警告を抑制する

単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。

#pragma warning disable CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506

ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none に設定します。

[*.{cs,vb}]
dotnet_diagnostic.CA1506.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。

しきい値の構成

このルールが発動するしきい値と、分析するシンボルの種類を構成できます。 使用できるシンボルの種類は次のとおりです。

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. CodeMetricsConfig.txt という名前のテキスト ファイルを作成します。

  2. 必要なしきい値を次の形式でこのテキスト ファイルに追加します。

    CA1506(Method): 60
    CA1506(Type): 120
    

    この例では、メソッドに 60 を超える一意の型参照がある場合、または型に 120 を超える一意の型参照がある場合に、ルールを実行するように構成されています。 この構成ファイルでは、ルールはクラス結合が既定のしきい値 (40) を超えるフィールド、プロパティ、およびイベントにフラグを立て続けます。

  3. プロジェクト ファイルで、構成ファイルのビルド アクションを AdditionalFiles としてマークします。 次に例を示します。

    <ItemGroup>
      <AdditionalFiles Include="CodeMetricsConfig.txt" />
    </ItemGroup>
    

関連項目