CA1505:應避免撰寫無法維護的程式碼

屬性
規則識別碼 CA1505
標題 應避免撰寫無法維護的程式碼
類別 可維護性
修正程式是中斷或非中斷 不中斷
默認閾值 10
預設在 .NET 8 中啟用 No

原因

類型、方法、欄位、屬性或事件具有較低的可維護性索引值。

檔案描述

當類型、方法、欄位、屬性或事件的可維護性索引小於 10 時,規則會報告違規。 不過,您可以 設定臨界值

維護性索引是使用下列計量來計算:程式代碼行、程式量和旋式複雜度。 (程序卷 是以程序代碼中的運算符和操作數為基礎,難以瞭解類型或方法的量值。 旋形複雜度 是類型或方法結構複雜性的量值。 您可以在測量Managed程式碼的複雜度和可維護性, 深入瞭解程式代碼計量。

低維護性索引表示類型或方法可能難以維護,而且是重新設計的好候選專案。

如何修正違規

若要修正此違規,請重新設計類型或方法,並嘗試將它分割成更小、更專注的類型或方法。

隱藏警告的時機

當類型或方法無法分割或視為可維護時,您可以隱藏這個警告,儘管其大小很大。

注意

如果適用下列所有專案,您可能會看到來自此規則的誤判警告:

  • 您使用 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>
    

另請參閱