語言和不必要的規則
程式代碼樣式語言規則會影響使用 .NET 程式設計語言的各種建構方式,例如修飾詞和括號。
此類別也包含規則,這些規則會識別不必要的程式代碼基底部分,而且可以重構或移除。 出現不必要的程式代碼表示下列一或多個問題:
- 可讀性:不必要地降低可讀性的程序代碼。
- 可維護性:重構之後不再使用且不必要地維護的程序代碼。
- 效能:沒有副作用的不必要的計算,並導致不必要的效能負擔。
- 功能:程序代碼中使必要程式代碼備援的功能問題。 例如, IDE0060 旗標未使用的參數,其中方法不小心忽略輸入參數。
語言規則分為下列類別:
- .NET 樣式規則:適用於 C# 和 Visual Basic 的規則。 這些規則的選項名稱開頭為 前置詞
dotnet_style_
。 - C# 樣式規則:C# 程式代碼特有的規則。 這些規則的選項名稱開頭為 前置詞
csharp_style_
。 - Visual Basic 樣式規則:Visual Basic 程式代碼特有的規則。 這些規則的選項名稱開頭為 前置詞
visual_basic_style_
。
選項格式
許多語言規則都有一或多個相關聯的選項,可自定義慣用的樣式。 例如,使用簡單的 'using' 陳述式 (IDE0063) 具有相關選項 csharp_prefer_simple_using_statement
,可讓您定義要使用 using
宣告或 using
陳述式。 規則會強制執行您在指定層級選擇的選項,例如警告或錯誤。
語言規則的選項可以使用下列格式在組態檔中指定:
option_name = value
(Visual Studio 2019 及更新版本)
或
option_name = value:severity
ReplTest1
針對每個語言規則,您可以指定一個值,定義是否或何時偏好樣式。 許多規則都接受 (偏好此樣式) 或
false
(不喜歡這種樣式) 的值true
。 其他規則接受 值,例如when_on_single_line
或never
。嚴重性 (Visual Studio 2019 和更新版本中為選擇性)
規則的第二個部分會 指定規則的嚴重性層級 。 在 .NET 9 和更新版本中,一律會遵守嚴重性,也就是在開發 IDE 內,以及在 命令行組建期間。 在 .NET 8 和舊版中,此嚴重性設定只會在開發 IDE 內受到尊重,例如 Visual Studio, 而不是 在建置期間。
如果您使用 .NET 8 SDK 或舊版,而且您希望在建置階段遵守嚴重性,則可以使用下列兩種方式之一來執行此動作:
- 將 AnalysisLevel> 或
<AnalysisLevelStyle>
屬性設定為9.0
或更新版本,或設定為preview
。< - 請改用分析器的規則標識碼型嚴重性組態語法來設定嚴重性。 語法格式
dotnet_diagnostic.<rule ID>.severity = <severity>
為 ,例如dotnet_diagnostic.IDE0040.severity = warning
。 如需詳細資訊,請參閱 嚴重性層級。
- 將 AnalysisLevel> 或
提示
從 Visual Studio 2019 開始,您可以在發生樣式違規之後,從 [快速動作 ] 燈泡菜單設定程式代碼樣式規則。
規則索引
語言和不必要的程式代碼規則會進一步分類為子類別,例如表達式層級喜好設定、程式代碼區塊喜好設定和修飾詞喜好設定。
using
指示詞喜好設定- 程序代碼區塊喜好設定
- 運算式主體成員
- 運算式層級喜好設定
- 欄位喜好設定
- 語言關鍵詞與架構類型喜好設定
- 修飾詞喜好設定
- 新行喜好設定
- Null 檢查喜好設定
- 參數喜好設定
- 括號喜好設定
- 模式比對喜好設定
- 隱藏喜好設定
This.
和me.
喜好設定var
偏好
using
指示詞喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
C# 樣式規則:
程序代碼區塊喜好設定
C# 樣式規則:
- 新增大括弧 (IDE0011)
- 使用簡單的 'using' 語句 (IDE0063)
- 命名空間宣告喜好設定 (IDE0160, IDE0161)
- 移除不必要的 Lambda 運算式 (IDE0200)
- 轉換成最上層語句 (IDE0210)
- 轉換成 'Program.Main' 樣式程式 (IDE0211)
- 使用主要建構函式 (IDE0290)
- 偏好 'System.Threading.Lock' (IDE0330)
運算式主體成員
C# 樣式規則:
- 使用建構函式的表示式主體 (IDE0021)
- 針對方法使用表示式主體 (IDE0022)
- 針對運算子使用表示式主體 (IDE0023, IDE0024)
- 針對屬性使用表示式主體 (IDE0025)
- 使用索引器的表示式主體 (IDE0026)
- 使用存取子的表示式主體 (IDE0027)
- 針對 Lambda 使用表示式主體 (IDE0053)
- 針對本機函式使用表示式主體 (IDE0061)
運算式層級喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
- 簡化名稱 (IDE0001)
- 簡化成員存取 (IDE0002)
- 移除不必要的轉型(IDE0004)
- 將遺漏案例新增至 switch 語句 (IDE0010)
- 使用物件初始化表示式 (IDE0017)
- 使用集合初始化表示式 (IDE0028)
- 可以簡化 Null 檢查(IDE0029、IDE0030、IDE0270)
- 使用 null 傳播 (IDE0031)
- 使用自動實作的屬性 (IDE0032)
- 使用明確提供的 Tuple 名稱 (IDE0033)
- 移除無法連線的程式代碼 (IDE0035)
- 使用推斷的成員名稱 (IDE0037)
- 使用 'is null' 檢查 (IDE0041)
- 使用條件表示式進行指派 (IDE0045)
- 使用條件表示式傳回 (IDE0046)
- 將匿名類型轉換為 Tuple (IDE0050)
- 移除未使用的私人成員 (IDE0051)
- 移除未讀取的私人成員 (IDE0052)
- 使用複合指派 (IDE0054, IDE0074)
- 移除不必要的表示式值 (IDE0058)
- 移除不必要的值指派 (IDE0059)
- 使用 'System.HashCode.Combine' (IDE0070)
- 簡化插補(IDE0071)
- 簡化條件表示式 (IDE0075)
nameof
轉換成typeof
(IDE0082)- 移除不必要的相等運算子 (IDE0100)
- 簡化 LINQ 運算式 (IDE0120)
- 命名空間不符合資料夾結構(IDE0130)
C# 樣式規則:
- 使用 throw 運算式 (IDE0016)
- 內嵌變數宣告 (IDE0018)
- 簡化 'default' 運算式 (IDE0034)
- 使用本機函式而非 Lambda (IDE0039)
- 解構變數宣告 (IDE0042)
- 使用索引運算子 (IDE0056)
- 使用範圍運算子 (IDE0057)
- 新增遺漏案例以切換表示式 (IDE0072)
- 移除不必要的隱藏運算子 (IDE0080)
- 簡化
new
表示式 (IDE0090) - 移除不必要的捨棄 (IDE0110)
- 建議使用 'null' 檢查而非類型檢查 (IDE0150)
- 使用 Tuple 交換值 (IDE0180)
- 在 foreach 循環中新增明確轉換 (IDE0220)
- 使用 UTF-8 字串常值 (IDE0230)
- 可為 Null 的指示詞是多餘的 (IDE0240)
- 不需要 Null 指示詞 (IDE0241)
- 針對 array 使用集合運算式 (IDE0300)
- 針對 empty 使用集合運算式 (IDE0301)
- 針對堆疊設定使用集合表示式 (IDE0302)
- 針對
Create()
使用集合運算式 (IDE0303) - 針對產生器使用集合表示式 (IDE0304
- 針對 fluent 使用集合運算式 (IDE0305)
Visual Basic 樣式規則:
欄位喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
語言關鍵詞與架構類型喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
修飾詞喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
C# 樣式規則:
新行喜好設定
- 允許多個空白行 (IDE2000)
- 允許相同行的內嵌語句 (IDE2001)
- 允許連續大括弧之間的空白行(IDE2002)
- 封鎖後立即允許語句 (IDE2003)
- 允許在建構函式初始化運算式中冒號之後的空白行 (IDE2004)
- 在條件表示式中允許在標記後面空白行 (IDE2005)
- 在箭號表示式中允許在標記後面空白行 (IDE2006)
Null 檢查喜好設定
C# 樣式規則:
參數喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
括號喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
模式比對喜好設定
C# 樣式規則:
- 使用模式比對來避免 'as' 後面接著 'null' 檢查 (IDE0019)
- 使用模式比對以避免 'is' 檢查後面接著轉換 (IDE0020, IDE0038)
- 使用 switch 表示式 (IDE0066)
- 使用模式比對 (IDE0078和 IDE0260)
- 使用模式比對 (
not
運算子) (IDE0083) - 簡化屬性模式 (IDE0170)
隱藏喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
This.
和 me.
喜好設定
.NET 樣式規則 (C# 和 Visual Basic):
var
偏好
C# 樣式規則: