CA1506:應避免使用結合過度的類別

屬性
規則識別碼 CA1506
標題 應避免使用結合過度的類別
類別 可維護性
修正程式是中斷或非中斷 中斷
默認閾值 類型:95 其他符號:40
預設在 .NET 8 中啟用 No

原因

類型、方法、欄位、屬性或事件會與許多其他類型結合。 編譯程式產生的類型會從這個計量中排除。

檔案描述

此規則會計算類型、方法、字段、屬性或事件所包含的唯一型別參考數目,以測量類別結合。 類型的默認結合閾值為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>
    

另請參閱