CA1505:メンテナンスできないコードを使用しないでください

プロパティ
ルール ID CA1505
Title メンテナンスできないコードを使用しないでください
[カテゴリ] 保守容易性
修正が中断ありか中断なしか なし
既定のしきい値 10
.NET 8 では既定で有効 いいえ

原因

型、メソッド、フィールド、プロパティ、またはイベントの保守容易性指数が低いです。

規則の説明

このルールは、型、メソッド、フィールド、プロパティ、またはイベントの保守容易性指数が 10 未満の場合に違反を報告します。 ただし、しきい値の構成ができます。

保守容易性指数は、次のメトリクスを使用して計算されます: コード行、プログラム ボリューム、およびサイクロマティック複雑度。 (プログラム ボリュームは、コード内の演算子とオペランドの数に基づく、型またはメソッドの解釈しにくさの尺度です。 サイクロマティック複雑度は、型またはメソッドの構造上の複雑さの尺度です。 コード メトリックの詳細については、マネージ コードの複雑さと保守性の測定に関するページを参照してください。

保守容易性指数の低い型またはメソッドは、保守が困難な可能性があるため、デザインの変更を検討することをお勧めします。

違反の修正方法

この違反を修正するには、型またはメソッドのデザインを変更し、より小さな、より対象を絞った型またはメソッドに分割します。

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

型またはメソッドが分割できない、またはサイズが大きいにもかかわらず保守が容易であると見なされる場合は、この警告を抑制できます。

注意

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

  • 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 CA1505
// The code that's violating the rule is on this line.
#pragma warning restore CA1505

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

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

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

しきい値の構成

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

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

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

    CA1505: 20
    

    この例では、型、メソッド、フィールド、プロパティ、またはイベントの保守容易性インデックスが 20 未満の場合にルールを実行するように構成されています。

    CA1505(Method): 5
    CA1505(Type): 15
    

    この例では、メソッドの保守容易性指数が 5 より小さい場合、または型の保守容易性指数が 15 未満の場合に、ルールが発生するように構成されています。 この構成ファイルを使用すると、保守容易性指数が既定のしきい値 (10) より小さいフィールド、プロパティ、イベントに対して、ルールによって引き続きフラグが立てられます。

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

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

関連項目