VB.NET のコードインスペクション
VB.NET では、ReSharper 2026.1 は 2 種類のコードインスペクションを提供します。274 エラーを検出するインスペクション (壊れた構文、未解決のシンボル、コンパイラー エラーなど。これらのインスペクションは設定や無効化はできません)と、280 独自のコードインスペクションは、いずれも 無効化したり、その 重要度レベルを変更したりできます。
これらの コードインスペクションは、すべての開いているファイルの 設計時にコードの問題を検出するのに役立ち、さらに 特定のスコープでコードの問題を見つけることもできます。
以下に、構成可能な VB.NET インスペクションを、 カテゴリ別にグループ化して示します。
コード通知 (1 インスペクション)
このカテゴリは、重要度レベルが軽微なコードインスペクションをまとめています。
インスペクション | |
|---|---|
非アクティブなプリプロセッサーブランチ |
一般的なプラクティスとコードの改善 (118 インスペクション)
このカテゴリには、主にコードの可読性に影響する中程度の重要度の問題を検出するインスペクションがまとめられています。
インスペクション | |
|---|---|
階層内でのアノテーションの重複 | |
自動プロパティは取得専用 (非公開アクセシビリティ) にすることができます | |
自動プロパティは取得専用 (private アクセス) にすることができます | |
参照の等価性をチェックしてください | |
参照の等価性をチェックしてください | |
クラスは sealed (継承不可) (非公開アクセシビリティ) にできます | |
クラスは sealed (継承不可) (private アクセス) にできます | |
非コンテナ型の宣言でコンテナ null 許容性属性を使用 | |
ローカル変数またはフィールドを定数に変換する (非公開アクセシビリティ) | |
ローカル変数またはフィールドを定数に変換する (private アクセス) | |
プロパティを自動プロパティに変換する | |
可能であればプロパティを自動プロパティに変換する | |
プライベート setter 付きでプロパティを自動プロパティに変換する | |
フィールドは読み取り専用 (非公開アクセシビリティ) にすることができます | |
フィールドは読み取り専用 (private アクセス) にすることができます | |
取得専用の自動プロパティには値が割り当てられていません | |
メンバーは private (非公開アクセシビリティ) にすることができます | |
メンバーは private (private アクセス) にすることができます | |
メンバーは protected (非公開アクセシビリティ) にすることができます | |
メンバーは protected (private アクセス) にすることができます | |
メンバーは静的(共有)(非公開アクセシビリティ)にすることができます | |
メンバーは静的(共有)(private アクセシビリティ)にすることができます | |
メンバーまたは型は internal (friend) にすることができます | |
複数の null 許容性属性の使用 | |
void 型または値型の宣言に null 許容性属性を使用 | |
パラメーターは基本型で宣言できます | |
コンストラクターのパラメーターは基本型で宣言できます | |
パラメーターの型は IEnumerable<T> (非公開アクセシビリティ) にできます | |
パラメーターの型は IEnumerable<T> (private アクセス) にできます | |
誤った引数の可能性 | |
GetType() への誤った呼び出しの可能性 | |
GetType() への誤った呼び出しの可能性 | |
プロパティは init のみにすることができます (非公開アクセシビリティ) | |
プロパティは init のみに設定できます(private アクセス) | |
ToList() を削除 | |
ToList() を削除 | |
FirstOrDefault($args$)に置き換え | |
LastOrDefault($args$)に置き換え | |
OfType<T>() で置換(OfType(Of ..)() でも同様に置換) | |
OfType<T>() で置換(OfType(Of ..)() でも同様に置換) | |
OfType<T>().Any() で置換(OfType(Of ..)().Any() でも同様に置換) | |
OfType<T>().Any() で置換(OfType(Of ..)().Any(..) でも同様に置換) | |
OfType<T>().Count() で置換(OfType(Of ..)().Count() でも同様に置換) | |
OfType<T>().Count() で置換(OfType(Of ..)().Count(..) でも同様に置換) | |
OfType<T>().First() で置換(OfType(Of ..)().First() でも同様に置換) | |
OfType<T>().First() で置換(OfType(Of ..)().First(..) でも同様に置換) | |
OfType<T>().FirstOrDefault() で置換(OfType(Of ..)().FirstOrDefault() でも同様に置換) | |
OfType<T>().FirstOrDefault() で置換(OfType(Of ..)().FirstOrDefault(..) でも同様に置換) | |
OfType<T>().Last() で置換(OfType(Of ..)().Last() でも同様に置換) | |
OfType<T>().Last() で置換(OfType(Of ..)().Last(..) でも同様に置換) | |
OfType<T>().LastOrDefault() で置換(OfType(Of ..)().LastOrDefault() でも同様に置換) | |
OfType<T>().LastOrDefault() で置換(OfType(Of ..)().LastOrDefault(..) でも同様に置換) | |
OfType<T>().Single() で置換(OfType(Of ..)().Single() でも同様に置換) | |
OfType<T>().Single() で置換(OfType(Of ..)().Single(..) でも同様に置換) | |
OfType<T>().SingleOrDefault() で置換(OfType(Of ..)().SingleOrDefault() でも同様に置換) | |
OfType<T>().SingleOrDefault() で置換(OfType(Of ..)().SingleOrDefault(..) でも同様に置換) | |
OfType<T>().Where() で置換(OfType(Of ..)().Where(..) でも同様に置換) | |
単一の代入で置き換えてください | |
単一の代入で置き換えてください | |
Any(..) への単一呼び出しで置き換えてください | |
Count(..) への単一呼び出しで置き換えてください | |
First(..) への単一呼び出しで置き換えてください | |
FirstOrDefault(..) への単一呼び出しで置き換えてください | |
Last(..) への単一呼び出しで置き換えてください | |
LastOrDefault(..) への単一呼び出しで置き換えてください | |
Single(..) への単一呼び出しで置き換えてください | |
SingleOrDefault(..) への単一呼び出しで置き換えてください | |
SingleOrDefault($args$)に置き換え | |
戻り値の型は IEnumerable<T> にできます(非 private アクセス) | |
戻り値の型は IEnumerable<T> にできます(private アクセス) | |
条件演算子を簡単にする | |
式を簡素化する | |
式を簡素化する | |
式を簡素化する | |
式を簡素化する | |
式を簡素化する | |
式を簡素化する | |
式を簡素化する | |
式を簡素化する | |
式を簡素化する | |
式を簡素化する | |
「IIf」を簡素化 | |
文字列比較を明示的に指定 | |
String.Compare はカルチャ固有のものです(string.Compare(文字列、int、文字列、int) はカルチャ固有のものです) | |
String.Compare はカルチャ固有のものです(string.Compare(文字列、int、文字列、int、ブール) はカルチャ固有のものです) | |
String.Compare はカルチャ固有のものです(string.Compare(文字列、int、文字列、int、ブール) はカルチャ固有のものです) | |
String.Compare はカルチャ固有のものです(string.Compare(文字列、文字列) はカルチャ固有のものです) | |
String.Compare はカルチャ固有のものです(string.Compare(文字列、文字列、ブール) はカルチャ固有のものです) | |
String.Compare はカルチャ固有のものです(string.Compare(文字列、文字列、ブール) はカルチャ固有のものです) | |
String.CompareTo はカルチャ固有のものです | |
String.EndsWith はカルチャ固有のものです(string.EndsWith(文字列) はカルチャ固有のものです) | |
String.IndexOf はカルチャ固有のものです(string.IndexOf(文字列) はカルチャ固有のものです) | |
String.IndexOf はカルチャ固有のものです(string.IndexOf(文字列、int) はカルチャ固有のものです) | |
String.IndexOf はカルチャ固有のものです(string.IndexOf(文字列、int) はカルチャ固有のものです) | |
String.LastIndexOf はカルチャ固有のものです(string.LastIndexOf(文字列) はカルチャ固有のものです) | |
String.LastIndexOf はカルチャ固有のものです(string.LastIndexOf(文字列、int) はカルチャ固有のものです) | |
String.LastIndexOf はカルチャ固有のものです(string.LastIndexOf(文字列、int) はカルチャ固有のものです) | |
String.StartsWith はカルチャ固有のものです(string.StartsWith(文字列) はカルチャ固有のものです) | |
構造体を読み取り専用にすることができます | |
構造体に 'IEquatable' 実装がありません(非公開アクセシビリティ) | |
構造体に 'IEquatable' 実装がありません(private アクセス) | |
構造体メンバーを読み取り専用にすることができます | |
デフォルトの等値メンバーを持つ構造体は比較に使用されます(非公開アクセシビリティ) | |
デフォルトの等値メンバーを持つ構造体は比較に使用されます(private アクセス) | |
try-catch と try-finally ステートメントはマージできます | |
レコード内で疑わしい等値を持つ型が使用されています(非公開アクセシビリティ) | |
レコード内で疑わしい等値を持つ型が使用されています(private アクセス) | |
配列作成式を使用する | |
配列作成式を使用する | |
代わりに First() を使用する | |
Any() メソッドを使用する | |
Any() メソッドを使用する | |
Any() メソッドを使用する | |
Any() メソッドを使用する | |
Any() メソッドを使用する | |
IsInstanceOfType(..) メソッドを使用する | |
'TypeOf .. Is ..' 演算子 | |
'TypeOf .. Is ..' 演算子 |
コンパイラーの警告 (25 インスペクション)
このカテゴリのインスペクションは、コンパイル前にコンパイラー警告を検出します。
インスペクション | |
|---|---|
インスタンス経由で共有メンバーにアクセス | |
Async メソッドに 'Await' 演算子がありません | |
この呼び出しは待機されないため、呼び出しが完了する前に現在のメソッドの実行が継続されます。 呼び出しの結果に『Await』演算子を適用することを検討してください。 | |
フィールドは使用されていません。 | |
関数がすべてのコードパスで参照型値を返しません | |
関数がすべてのコードパスで構造体値を返しません | |
メンバーがオーバーライド可能なメンバーを隠しています | |
Imports の 'name' で指定された名前空間または型にパブリックメンバーが含まれていないか、見つかりません | |
名前空間はこのプロジェクトのデフォルト名前空間でなければなりません。 | |
アクセスされていないフィールドです。 | |
アクセスされていないローカル変数です。 | |
同じ値の型への冗長な DirectCast | |
X から Y への変換時にランタイムエラーが発生する可能性があります | |
X を Y に変換するとランタイムエラーが発生することがあります | |
XML コメントの構文エラーです | |
パラメーターに適用された CallerArgumentExpressionAttribute は自己参照のため効果がありません | |
パラメーターに CallerArgumentExpressionAttribute を適用しても効果がありません。 無効なパラメーター名で適用されています。 | |
タイプは評価のみを目的としており、将来のアップデートで変更または削除される可能性があります。 続行するには、この診断を抑制してください。 | |
割り当てられていないフィールド。 | |
割り当てられていない読み取り専用フィールド。 | |
未使用のローカル変数 | |
廃止されたメンバーを使用しています | |
廃止されたメンバーを使用しています(メッセージなし) | |
値が割り当てられる前に変数が使用されています | |
XML コメントに解決できない 'cref' 属性を持つタグがあります |
制約違反 (2 インスペクション)
このカテゴリには、主に 警告重要度レベルで、シンボル属性に関連する違反(ReSharper のコードアノテーションを含む)や、その他の類似した問題を検出するコードインスペクションが含まれます。
インスペクション | |
|---|---|
一貫性のない命名 | |
名前空間がファイルの場所と一致していません |
文法の問題 (4 インスペクション)
このカテゴリのインスペクションは、文字列リテラルやドキュメントコメント内の 文法上の問題を報告します。
インスペクション | |
|---|---|
コメントの文法エラー | |
マークアップ属性値の文法エラー | |
マークアップテキストの文法エラー | |
文字列リテラルの文法エラー |
言語使用の機会 (7 インスペクション)
このカテゴリには、主に 提案の重要度レベルのコードインスペクションが含まれており、より高度な言語構造が使用できる場合に通知されます。 これらのインスペクションは、古い言語バージョンの構文を検出し、より新しい言語バージョンの機能を使うことを提案します。 ほとんどのサポート対象言語では、言語バージョン は自動的に検出されるか手動で設定できます。
インスペクション | |
|---|---|
static メソッド呼び出しを拡張機能メンバー呼び出しに変換する(修飾された static メソッド呼び出しを拡張機能メンバー呼び出しに変換する) | |
foreach ループは LINQ 式に変換できますが、別の 'GetEnumerator' メソッドが使用されます | |
ループは LINQ 式に変換できます | |
foreach ループの一部は LINQ 式に変換できますが、別の 'GetEnumerator' メソッドが使用されます | |
ループ本体の一部を LINQ 式に変換できます | |
文字列補間式を渡す | |
文字列補間式を使用する |
潜在的なコード品質問題 (67 インスペクション)
このカテゴリには、主に エラーまたは 警告レベルで、重大な問題(コードの臭い)を検出するインスペクションが含まれます。 このカテゴリには ローカライゼーション支援を保証するインスペクションも含まれます。
インスペクション | |
|---|---|
'?:' 式の真と偽のブランチが同一です | |
[ThreadStatic] はインスタンスフィールドでは機能しません | |
抽象または仮想(オーバーライド可能な)イベントが呼び出されることはありません | |
破棄されたキャプチャー変数へのアクセス | |
クロージャの foreach 変数へのアクセス | |
変更されたキャプチャー変数へのアクセス | |
階層内のアノテーションが競合する | |
自動プロパティアクセサーは決して使用されません(非公開アクセシビリティ) | |
自動プロパティアクセサーは決して使用されません(private アクセス) | |
暗黙的なデフォルトパラメーターを持つ基本メンバーへの呼び出し | |
'base.Equals(...)' の呼び出しは参照等価です | |
プロパティを解決できません | |
リソースを解決できません | |
リソース項目を解決できません | |
テキスト引数でシンボルを解決できません | |
クラスはインスタンス化されません(非公開アクセシビリティ) | |
クラスはインスタンス化されません(private アクセス) | |
コレクションの内容は決して照会されません(非公開アクセシビリティ) | |
コレクションの内容は決して照会されません(private アクセス) | |
コレクションは決して更新されません(非公開アクセシビリティ) | |
コレクションは決して更新されません(private アクセス) | |
書式文字列の書式指定子の後に右中括弧を使用しないでください | |
要素はローカライズ可能です | |
浮動小数点数の等値比較 | |
イベントは決して購読されない(非公開アクセシビリティ) | |
イベントは決して購読されない(private アクセス) | |
イベントは呼び出されなかった | |
例外の再スローが意図されている可能性があります | |
呼び出し元情報属性付きパラメーターに明示的な引数が渡されました | |
関数は返さない | |
'GC.SuppressFinalize' はデストラクターのない型に対して呼び出されます | |
イテレーターは返さない | |
ローカル変数がメンバーを隠しています | |
アクセスされていないフィールド(非公開アクセシビリティ) | |
アクセスされていないフィールド(private アクセス) | |
アクセスされていない位置プロパティ(非公開アクセシビリティ) | |
アクセスされていない位置プロパティ(private アクセス) | |
'GetHashCode()' で参照されている非 readonly 型メンバー | |
'Object.ReferenceEquals' は値型で呼び出されるため常に false です | |
演算子 'is'/'Type Of ... Is ...' を使用できます | |
'out' パラメーターが終了時に割り当てられていません | |
オーバーライドされた GetHashCode が base の 'Object.GetHashCode()' を呼び出しています | |
パラメーターがメンバーを隠しています | |
Double-Check Locking パターンの実装が間違っている可能性があります。 チェックされたフィールドへの複数の書き込みアクセスの可能性あり | |
Double-Check Locking パターンの実装が間違っている可能性があります。 チェックされたフィールドへの読み取りアクセス | |
無限継承の可能性あり | |
複数回の列挙の可能性あり | |
'Me' への書き込みの可能性 | |
不純な構造体メソッドが読み取り専用変数で呼び出された可能性あり: 構造体値は呼び出しの前に必ずコピーされます | |
純粋なメソッドの戻り値が使用されていません | |
類似する式の比較 | |
ジェネリック型の静的フィールドまたは自動プロパティ | |
静的メンバーイニシャライザーが下または他の箇所の静的メンバーを参照しています | |
文字列フォーマットメソッドの問題 | |
構造化ログメッセージ項目が重複している、または大文字・小文字のみ異なっています | |
構造化メッセージテンプレートの問題 | |
疑わしい型変換またはチェック | |
実行時に失われる可能性があるモジュールからのシンボル | |
「l」の接尾辞は数字「1」と簡単に混同されます | |
スレッド静的フィールドにイニシャライザーがあります | |
型チェックとキャストは統合できます | |
割り当てられていないフィールド(非 private アクセシビリティ) | |
割り当てられていないフィールド(private アクセシビリティ) | |
割り当てられていない読み取り専用フィールド。 | |
書式文字列で書式指定子を使用してください | |
非変数修飾子式のプロパティに割り当てた値が失われることがあります | |
「void」メソッドに [Pure] 属性が付与されています |
コードの冗長性 (23 インスペクション)
このカテゴリのコードインスペクションは、可読性やスタイルに影響する冗長部分やデッドコードを探し、これらは安全に削除できます。 一部のコード冗長性は自動的に修正できず、それらのクイックフィックスは対話モードで実行され、ユーザー入力が必要です。 ただし、冗長な部分のほとんどは スコープ内の修正 または コードのクリーンアップ を使うことでユーザー操作なしで修正できます。
インスペクション | |
|---|---|
代入は使用されていません | |
明示的な 'value' パラメーターの宣言は冗長なものです | |
式は常に「true」または「false」です | |
'Yield' ステートメントのない Iterator 関数です | |
複数行の 'If' ステートメントでは 'Then' キーワードは冗長なものです | |
パラメーターなしプロパティの丸括弧は冗長なものです | |
属性に引数がない場合、丸括弧は冗長です | |
呼び出し元引数式パラメーターに渡された冗長な引数 | |
冗長な配列下限指定 | |
冗長なキャスト | |
冗長な空の 'Case Else' ステートメント | |
配列作成における冗長な明示的サイズ指定 | |
冗長な 'Me.' 修飾子 | |
冗長な 'MyBase.' 修飾子 | |
冗長な 'MyClass.' 修飾子 | |
論理条件式の冗長なオペランド | |
冗長な修飾子 | |
冗長な丸括弧を削除 | |
到達不能コード | |
未使用のインポート句 | |
暗黙の 'ByVal' 修飾子を使用する | |
暗黙的に型指定された変数宣言を使用してください | |
暗黙的に型指定された変数宣言を使用する(明確) |
シンボル宣言の冗長性 (30 インスペクション)
このカテゴリには、主に 警告重要度レベルで、空や未使用のシンボル宣言を検出するコードインスペクションが含まれます。
インスペクション | |
|---|---|
継承されない仮想(オーバーライド可能な)メンバーを持つクラス(非公開アクセシビリティ) | |
継承されない仮想(オーバーライド可能な)メンバーを持つクラス(private アクセス) | |
エンティティはその名前の取得にのみ使用されています(非 private アクセシビリティ) | |
エンティティはその名前を取得するためだけに使用されます(private アクセシビリティ) | |
メソッドの戻り値は使用されません(非公開アクセシビリティ) | |
メソッドの戻り値は使用されません(private アクセス) | |
アクセスされていないローカル変数です。 | |
アクセスされないローカル変数は「out」パラメーター値を破棄する目的でのみ使用されます | |
アクセスされていないプライマリコンストラクターパラメーター | |
パラメーターは前提条件チェックにのみ使用されます(非公開アクセシビリティ) | |
パラメーターは前提条件チェックにのみ使用されます(private アクセス) | |
パラメーター出力値は常に破棄されます(非公開アクセシビリティ) | |
パラメーター出力値は常に破棄されます(private アクセス) | |
型は使用されません(非公開アクセシビリティ) | |
型は使用されません(private アクセス) | |
型メンバーは基本型経由でアクセスされることはありません(非 private アクセシビリティ) | |
型メンバーは基本型経由でアクセスされることはありません(private アクセシビリティ) | |
型メンバーが使用されていません(非公開アクセシビリティ) | |
型メンバーは使用されません(private アクセス) | |
型メンバーはオーバーライドでのみ使用されます(非公開アクセシビリティ) | |
型メンバーはオーバーライドでのみ使用されます(private アクセス) | |
未使用のラベル | |
未使用のローカル変数 | |
未使用のパラメーター(非公開アクセシビリティ) | |
未使用のパラメーター(private アクセス) | |
部分メソッドの未使用パラメーター | |
未使用の位置パラメーター | |
未使用の型パラメーター | |
仮想(オーバーライド可能な)メンバーは決してオーバーライドされません(非公開アクセシビリティ) | |
仮想(オーバーライド可能な)メンバーは決してオーバーライドされません(private アクセシビリティ) |
スペルの問題 (3 インスペクション)
これらのインスペクションは 様々なコンテキストでタイプミスを検出します。
インスペクション | |
|---|---|
コメントのタイプミス | |
識別子のタイプミス | |
文字列リテラルのタイプミス |