言語と不要なルール
コードスタイルの言語規則は、.NET プログラミング言語のさまざまなコンストラクト (修飾子、かっこなど) の使用方法に影響します。
このカテゴリには、不要なコード規則は、不要でリファクタリングまたは削除することができるコード ベースのさまざまな部分を特定します。 不要なコードが存在する場合は、次の問題の 1 つ以上が存在することを示しています。
- 読みやすさ: 読みやすさを不必要に低下させるコード。
- 保守容易性: リファクタリング後に使用されなくなり、不必要に維持されるコード。
- パフォーマンス: 副作用がなく、不要なパフォーマンスのオーバーヘッドが発生する不要な計算。
- 機能: コードの冗長なレンダリングが必要となるコードの機能の問題。 たとえば、IDE0060 は、メソッドで誤って入力パラメーターを無視した場合に、未使用のパラメーターにフラグを設定します。
この規則は次のカテゴリに分けられます:
- .NET スタイル規則: C# と Visual Basic の両方に適用される規則。 これらの規則のオプション名は
dotnet_style_
のプレフィックスで始まります。 - C# スタイル規則: C# コードに固有の規則。 これらの規則のオプション名は
csharp_style_
のプレフィックスで始まります。 - Visual Basic のスタイル規則: Visual Basic のコードに固有の規則。 これらの規則のオプション名は
visual_basic_style_
のプレフィックスで始まります。
オプションの書式
言語ルールの多くには、優先スタイルをカスタマイズするためのオプションが 1 つ以上関連付けられています。 たとえば、Use simple 'using' ステートメント (IDE0063) には、using
宣言とusing
ステートメントのどちらを使用するかを定義できるオプションcsharp_prefer_simple_using_statement
が関連付けられています。 この規則では、指定したレベルで選択したオプション (警告やエラーなど) が適用されます。
言語規則のオプションは、構成ファイルに、次の形式で指定できます。
option_name = value
(Visual Studio 2019 以降)
or
option_name = value:severity
Value
各言語規則では、そのスタイルを優先する場合や状況を指定します。 多くのルールでは、
true
(このスタイルを優先する) またはfalse
(このスタイルを優先しない) の値が受け付けられます。 それ以外では、when_on_single_line
やnever
などの値が受け付けられます。Severity (Visual Studio 2019 バージョン以降のバージョンでは省略可能)
規則の 2 番目の部分では、規則の重大度レベルを指定します。 .NET 9 以降のバージョンでは、重大度は常に尊重されます。つまり、開発 IDE および コマンド ライン ビルド中に考慮されます。 .NET 8 以前のバージョンでは、この重大度設定は Visual Studio などの開発 IDE 内でのみ考慮され、ビルド中はされません。
.NET 8 SDK 以前のバージョンを使用していて、ビルド時に重大度を尊重する場合は、次の 2 つの方法のいずれかでこれを行うことができます。
- <AnalysisLevel> または
<AnalysisLevelStyle>
プロパティを9.0
以上に設定するか、preview
に設定します。 - 代わりに、アナライザーのルール ID ベースの重大度構成構文を使用して重大度を設定します。 この構文では
dotnet_diagnostic.<rule ID>.severity = <severity>
形式が使用されます。たとえば、dotnet_diagnostic.IDE0040.severity = warning
のようになります。 詳細については、「重大度レベル」を参照してください。
- <AnalysisLevel> または
ヒント
Visual Studio 2019 以降、スタイル違反後、[クイック アクション] という電球メニューからコード スタイルの規則を構成できます。
ルール インデックス
言語と不要なコード 規則は、式レベルの基本設定、コード ブロックの基本設定、修飾子の基本設定などのサブカテゴリに分類されます。
using
ディレクティブの基本設定- コード ブロックの基本設定
- 式形式のメンバー
- 式レベル基本設定
- フィールド設定
- 言語キーワード (keyword)とフレームワークの種類の基本設定
- 修飾子の基本設定
- 改行設定
- "Null" 検査設定
- パラメーターのユーザー設定
- かっこの基本設定
- パターン マッチングの基本設定
- 抑制の基本設定
This.
およびme.
基本設定var
基本設定
using
using ディレクティブの基本設定
.NET スタイル規則 (C# と Visual Basic):
C# スタイル規則:
コード ブロックの基本設定
C# スタイル規則:
- 中かっこを追加する (IDE0011)
- 単純な 'using' ステートメントを使用する (IDE0063)
- 名前空間宣言の基本設定 (IDE0160、IDE0161)
- 不要なラムダ式を削除する (IDE0200)
- 最上位レベルのステートメントに変換する (IDE0210)
- 'Program.Main' スタイル プログラムに変換 (IDE0211)
- プライマリ コンストラクターを使用する (IDE0290)
- 'System.Threading.Lock' を優先する (IDE0330)
式形式のメンバー
C# スタイル規則:
- コンストラクターに式本体を使用する (IDE0021)
- メソッドに式本体を使用する (IDE0022)
- 演算子に式本体を使用する (IDE0023、IDE0024)
- プロパティに式本体を使用する (IDE0025)
- インデクサーに式本体を使用する (IDE0026)
- アクセサーに式本体を使用する (IDE0027)
- ラムダに式本体を使用する (IDE0053)
- ローカル関数に式本体を使用する (IDE0061)
式レベルの基本設定
.NET スタイル規則 (C# と Visual Basic):
- 名前を簡略化する (IDE0001)
- メンバー アクセスを簡略化する (IDE0002)
- 不要なキャストを削除する (IDE0004)
- 不足しているケースを switch ステートメントに追加する (IDE0010)
- オブジェクト初期化子を使用する (IDE0017)
- コレクション初期化子を使用する (IDE0028)
- Null チェックは簡略化できます (IDE0029、IDE0030、IDE0270)
- null 値の反映を使用する (IDE0031)
- 自動実装プロパティを使用する (IDE0032)
- 明示的に提供されたタプル名を使用する (IDE0033)
- 到達できないコードを削除する (IDE0035)
- 推定メンバーの名前を使用する (IDE0037)
- 'is null' チェックを使用する (IDE0041)
- 代入に条件式を使用する (IDE0045)
- 戻り値に条件式を使用する (IDE0046)
- 匿名型をタプルに変換する (IDE0050)
- 使用されていない非公開メンバーを削除する (IDE0051)
- 読み取られていない非公開メンバーを削除する (IDE0052)
- 複合代入を使用する (IDE0054、IDE0074)
- 不要な式の値を削除する (IDE0058)
- 不要な値の代入を削除する (IDE0059)
- 'System.HashCode.Combine' を使用する (IDE0070)
- 補間を簡略化する (IDE0071)
- 条件式を簡略化する (IDE0075)
typeof
をnameof
に変換する (IDE0082)- 不要な等値演算子を削除する (IDE0100)
- LINQ 式を簡略化する (IDE0120)
- 名前空間がフォルダー構造と一致しない (IDE0130)
C# スタイル規則:
- throw 式を使用する (IDE0016)
- インライン変数宣言 (IDE0018)
- ’default' 式を簡略化する (IDE0034)
- ラムダの代わりにローカル関数を使用する (IDE0039)
- 変数宣言を分解する (IDE0042)
- インデックス演算子を使用する (IDE0056)
- 範囲演算子を使用する (IDE0057)
- 不足しているケースを switch 式に追加する (IDE0072)
- 不要な抑制演算子を削除する (IDE0080)
new
式を簡略化する (IDE0090)- 不要な破棄を削除する (IDE0110)
- 型チェックよりも 'null' チェックを優先します (IDE0150)
- タプルを使用して値をスワップします (IDE0180)
- foreach ループに明示的なキャストを追加する (IDE0220)
- UTF-8 文字列リテラルを使用する (IDE0230)
- Null 許容ディレクティブが冗長 (IDE0240)
- Null 許容ディレクティブは不要です (IDE0241)
- 配列にコレクション式を使用する (IDE0300)
- 空の配列にコレクション式を使用する (IDE0301)
- スタック割り当てにコレクション式を使用する (IDE0302)
Create()
にコレクション式を使用する (IDE0303)- Builder パターンにコレクション式を使用する (IDE0304)
- コレクション式を使用して流暢なコードにする (IDE0305)
Visual Basic のスタイル規則:
フィールド設定
.NET スタイル規則 (C# と Visual Basic):
言語キーワード とフレームワークの種類の基本設定
.NET スタイル規則 (C# と Visual Basic):
修飾子の基本設定
.NET スタイル規則 (C# と Visual Basic):
C# スタイル規則:
- ローカル関数を静的にする (IDE0062)
- 構造体のフィールドを書き込み可能にする (IDE0064)
- '読み取り専用' にできる構造体 (IDE0250)
- メンバーを "読み取り専用" にすることができます (IDE0251)
- 匿名関数を静的にする (IDE0320)
新しい行の基本設定
- 複数の空白行を許可する (IDE2000)
- 同じ行で埋め込みステートメントを許可する (IDE2001)
- 連続する中かっこの間に空白行を許可する (IDE2002)
- ブロックの直後の Allow ステートメント (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# スタイル規則:
関連項目
.NET