CA1505:應避免撰寫無法維護的程式碼
屬性 | 值 |
---|---|
規則識別碼 | CA1505 |
職稱 | 應避免撰寫無法維護的程式碼 |
類別 | 可維護性 |
修正程式是中斷或非中斷 | 不中斷 |
默認閾值 | 10 |
預設在 .NET 9 中啟用 | 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
建立名為 CodeMetricsConfig.txt 的文字檔。
以下列格式將所需的臨界值新增至文字檔:
CA1505: 20
在此範例中,當類型、方法、字段、屬性或事件的可維護性索引小於 20 時,規則會設定為引發。
CA1505(Method): 5 CA1505(Type): 15
在此範例中,當方法的可維護性索引小於5或類型的可維護性索引小於15時,規則會設定為引發。 使用此組態檔時,規則會繼續標示其可維護性索引小於預設臨界值 (10) 的欄位、屬性和事件。
在項目檔中,將組態檔的建置動作標示為 AdditionalFiles。 例如:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>