VB.NET のコードインスペクション
VB.NET では、ReSharper 2024.3 は 2 種類のコードインスペクションを提供します。壊れた構文、未解決のシンボル、コンパイラーエラーなどのエラーを検出する 259 個のインスペクション (いずれも構成または無効にすることはできませんインスペクション)、および 278 個の独自コードインスペクション (いずれも無効にしたり、重大度レベルを変更したりできます)。
これらのコードインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出するのに役立ち、さらに特定のスコープ内でコードの問題を見つけることもできます。
以下に、構成可能な VB.NET インスペクションを、カテゴリ別にグループ化して示します。
コード通知 (1 インスペクション)
このカテゴリは、コードインスペクションをマイナーな重大度でグループ化します。
インスペクション | |
---|---|
非アクティブなプリプロセッサーブランチ
|
一般的なプラクティスとコードの改善 (118 インスペクション)
このカテゴリは、主にコードの可読性に影響する中程度の重大度の問題を探し出すインスペクションをグループ化します。
インスペクション | |
---|---|
階層のアノテーション複製
| |
自動プロパティは取得専用にすることができます (非公開アクセシビリティ)
| |
自動プロパティは取得専用にすることができます (private アクセス)
| |
代わりに参照等価をチェックする
| |
代わりに参照等価をチェックする
| |
クラスを密閉することができます (non-inheritable) (非公開アクセシビリティ)
| |
クラスを密閉することができます (non-inheritable) (private アクセス)
| |
非コンテナー型の宣言を伴うコンテナーの null 許容属性の使用
| |
ローカル変数またはフィールドを定数に変換する (非公開アクセシビリティ)
| |
ローカル変数またはフィールドを定数に変換する (private アクセス)
| |
プロパティを自動プロパティに変換する
| |
可能であればプロパティを自動プロパティに変換する
| |
プライベート setter でプロパティを自動プロパティに変換する
| |
フィールドは読み取り専用にすることができます (非公開アクセシビリティ)
| |
フィールドは読み取り専用にすることができます (private アクセス)
| |
| |
メンバーはプライベートにすることができます (非公開アクセシビリティ)
| |
メンバーはプライベートにすることができます (private アクセス)
| |
メンバーを保護することができます (非公開アクセシビリティ)
| |
メンバーを保護することができます (private アクセス)
| |
メンバーは静的にすることができます (共有) (非公開アクセシビリティ)
| |
メンバーは静的にすることができます (共有) (private アクセス)
| |
メンバーまたは型を内部にすることができます (友達)
| |
| |
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(..))
| |
1 回の割り当てで置き換えます
| |
1 回の割り当てで置き換えます
| |
Any(..)への単一呼び出しで置き換えます
| |
Count(..)への単一呼び出しで置き換えます
| |
First(..)への 1 回の呼び出しで置き換えます
| |
FirstOrDefault(..)への単一の呼び出しで置き換えます
| |
ラスト(..)への 1 回の呼び出しで置き換えます
| |
LastOrDefault(..)への単一呼び出しで置き換えます
| |
シングル(..)へのシングルコールで置き換えます
| |
SingleOrDefault(..)への単一の呼び出しで置き換えます
| |
SingleOrDefault($args$)に置き換えてください
| |
戻り値の型は IEnumerable <T> (非公開アクセシビリティ)
| |
戻り値の型は IEnumerable <T> (private アクセス)
| |
条件演算子を簡略化する
| |
式の単純化
| |
式の単純化
| |
式の単純化
| |
式の単純化
| |
式の単純化
| |
式の単純化
| |
式の単純化
| |
式の単純化
| |
式の単純化
| |
式の単純化
| |
「IIf」を簡素化
| |
| |
String.Compare は文化固有のものです(string.Compare(string、int、string、int)はカルチャ固有です)
| |
String.Compare は文化固有のものです(string.Compare(string、int、string、int、bool)はカルチャ固有です)
| |
String.Compare は文化固有のものです(string.Compare(string、int、string、int、bool)はカルチャ固有です)
| |
String.Compare はカルチャ固有です(string.Compare(string、string)はカルチャ固有です)
| |
String.Compare は文化固有のものです(string.Compare(string、string、bool)はカルチャ固有です)
| |
String.Compare は文化固有のものです(string.Compare(string、string、bool)はカルチャ固有です)
| |
String.CompareTo は文化固有のものです
| |
String.EndsWith はカルチャ固有です(string.EndsWith(string) はカルチャ固有)
| |
String.IndexOf はカルチャ固有です(string.IndexOf(string) はカルチャ固有)
| |
String.IndexOf はカルチャ固有です(string.IndexOf(string、int)はカルチャ固有)
| |
String.IndexOf はカルチャ固有です(string.IndexOf(string、int)はカルチャ固有)
| |
String.LastIndexOf はカルチャ固有です(string.LastIndexOf(string) はカルチャ固有)
| |
String.LastIndexOf はカルチャ固有です(string.LastIndexOf(string、int)はカルチャ固有)
| |
String.LastIndexOf はカルチャ固有です(string.LastIndexOf(string、int)はカルチャ固有)
| |
String.StartsWith は文化固有のものです(string.StartsWith(string) は文化固有のものです)
| |
構造体を読み取り専用にすることができます
| |
構造体に 'IEquatable' 実装がありません (非公開アクセシビリティ)
| |
構造体に 'IEquatable' 実装がありません (private アクセス)
| |
構造体メンバーを読み取り専用にすることができます
| |
デフォルトの等価メンバーを持つ構造体は比較に使用されます (非公開アクセシビリティ)
| |
デフォルトの等価メンバーを持つ構造体は比較に使用されます (private アクセス)
| |
try-catch と try-finally 文をマージすることができます
| |
レコード内で疑わしい等価性を持つ型が使用されています (非公開アクセシビリティ)
| |
レコード内で疑わしい等価性を持つ型が使用されています (private アクセス)
| |
配列作成式を使用する
| |
配列作成式を使用する
| |
代わりに First() を使用する
| |
Any() メソッドを使用する
| |
Any() メソッドを使用する
| |
Any() メソッドを使用する
| |
Any() メソッドを使用する
| |
Any() メソッドを使用する
| |
メソッド IsInstanceOfType(..)を使用します。
| |
'TypeOf .. Is ..' 演算子を使用します
| |
'TypeOf .. Is ..' 演算子を使用します
|
コンパイラーの警告 (25 インスペクション)
このカテゴリのインスペクションは、コンパイルする前にコンパイラーの警告を検出します。
インスペクション | |
---|---|
| |
非同期メソッドには 'Await' 演算子がありません
| |
この呼び出しは待機されないため、呼び出しが完了する前に現在のメソッドの実行が継続されます。呼び出しの結果に 'Await' 演算子を適用することを検討する (英語)
| |
| |
| |
| |
| |
インポート '名前' に指定された名前空間またはタイプにパブリックメンバーが含まれていないか、見つからない (英語)
| |
ネームスペースはこのプロジェクトのデフォルトネームスペースでなければなりません
| |
| |
| |
冗長 DirectCast を等しい値の型に変換する
| |
X から Y への変換時にランタイムエラーが発生する可能性が高い
| |
X を Y に変換するとランタイムエラーが発生することがあります (英語)
| |
| |
パラメーターに適用された CallerArgumentExpressionAttribute は、自己参照であるため、効果がありません。
| |
パラメーターに適用された CallerArgumentExpressionAttribute は効果がありません。無効なパラメーター名で適用されています。
| |
タイプは評価のみを目的としており、将来のアップデートで変更または削除される可能性があります。続行するには、この診断を抑制します。
| |
| |
| |
| |
廃止されたメンバーを使用する
| |
| |
| |
XML コメントに解決できなかった 'cref' 属性のタグがあります
|
制約違反 (2 インスペクション)
このカテゴリには、コードインスペクションが含まれ、ほとんどの場合、警告の重大度レベルがあり、ReSharper のコードアノテーションなどのシンボル属性に関連する違反やその他の同様の問題が検出されます。
インスペクション | |
---|---|
| |
|
文法の問題 (4 インスペクション)
このカテゴリのインスペクションは、文字列リテラルとドキュメントコメントの文法上の問題を報告します。
インスペクション | |
---|---|
| |
| |
| |
|
言語使用の機会 (7 インスペクション)
このカテゴリには、コードインスペクションが含まれ、ほとんどの場合、より高度な言語構造を使用できる場合に通知する提案の重大度レベルが含まれます。これらのインスペクションは、古い言語バージョンの構文を検出し、より新しい言語バージョンの機能の使用を提案します。サポートされているほとんどの言語では、言語バージョンを自動的に検出するか、手動で設定できます。
インスペクション | |
---|---|
静的メソッド呼び出しを拡張メソッド呼び出しに変換する
| |
Foreach ループは LINQ 式に変換できますが、別の 'GetEnumerator' メソッドが使用されます
| |
| |
foreach ループの一部は LINQ 式に変換できますが、別の 'GetEnumerator' メソッドが使用されます
| |
ループの本体の一部を LINQ 式に変換できます
| |
| |
|
潜在的なコード品質問題 (65 インスペクション)
このカテゴリには、主にエラーまたは警告レベルで重大な問題(コードのにおい)を検出するインスペクションが含まれます。このカテゴリには、ローカライゼーションの支援を確実にするインスペクションも含まれます。
インスペクション | |
---|---|
| |
[ThreadStatic] はインスタンスフィールドでは機能しません
| |
抽象または仮想(オーバーライド可能な)イベントが呼び出されることはありません
| |
| |
| |
| |
階層内のアノテーションの競合
| |
自動プロパティアクセサーは決して使用されません (非公開アクセシビリティ)
| |
自動プロパティアクセサーは決して使用されません (private アクセス)
| |
暗黙的なデフォルトパラメーターを持つ基本メンバーを呼び出します
| |
'base.Equals(...)' への呼び出しは参照の等価です
| |
プロパティを解決できません
| |
リソースを解決できません
| |
リソース項目を解決できません
| |
| |
クラスはインスタンス化されません (非公開アクセシビリティ)
| |
クラスはインスタンス化されません (private アクセス)
| |
コレクションの内容が照会されることはありません (非公開アクセシビリティ)
| |
コレクションの内容が照会されることはありません (private アクセス)
| |
| |
| |
| |
| |
| |
| |
イベントが呼び出されなかった
| |
例外の再挑戦が意図された
| |
呼び出し元情報属性を持つパラメーターに渡される明示的な引数
| |
| |
'GC.SuppressFinalize' はデストラクタのない型に対して呼び出されます
| |
反復子は返さない
| |
| |
| |
アクセスされていないフィールド (private アクセス)
| |
アクセスされていない位置プロパティ (非公開アクセシビリティ)
| |
アクセスされていない位置プロパティ (private アクセス)
| |
'GetHashCode()' で参照される非読み取り専用型メンバー
| |
'Object.ReferenceEquals' は値型で呼び出されるため常に false です
| |
演算子 'is' /'Type Of ... Is ...' を使用できます
| |
終了時に 'out' パラメーターが割り当てられない
| |
オーバーライドされた GetHashCode は、'Object.GetHashCode()' を呼び出する
| |
| |
Double-Check Locking パターンの実装が間違っている可能性があります。チェックされたフィールドへの複数の書き込みアクセスが可能です。
| |
Double-Check Locking パターンの実装が間違っている可能性があります。チェックされたフィールドへの読み取りアクセス。
| |
| |
| |
" 私 " への書き込み可能
| |
おそらく不純な struct メソッドが読み取り専用変数で呼び出されます: 呼び出し前に常にコピーされる構造体値
| |
| |
同様の表現の比較
| |
| |
静的メンバー初期化子は、下の静的メンバーまたは他の部分を参照します。
| |
| |
| |
| |
| |
'l' の接尾辞は数字 '1' と簡単に混同されます
| |
| |
| |
| |
割り当てられていないフィールド (private アクセス)
| |
割り当てられていない読み取り専用フィールド
| |
| |
非変数修飾子式のプロパティに割り当てられた値が失われる可能性があります
| |
'void' メソッドには [Pure] 属性のアノテーションが付けられます
|
コードの冗長性 (23 インスペクション)
このカテゴリのコードインスペクションは、コードの可読性とスタイルに影響を与える冗長性とデッドコードを探し、安全に削除できます。一部のコードの冗長性は自動的に修正できず、それらのクイックフィックスはインタラクティブモードで実行され、ユーザー入力が必要です。ただし、冗長性の大部分は、スコープ内の修正またはコードのクリーンアップを使用して、ユーザーの操作なしで修正できます。
インスペクション | |
---|---|
| |
明示的な 'value' パラメーターの宣言は冗長です
| |
| |
'Yield' ステートメントのない Iterator 関数
| |
複数の 'If' ステートメントでキーワード 'Then' が重複しています
| |
パラメーターのないプロパティ括弧は冗長です
| |
| |
| |
冗長配列の下限指定
| |
| |
冗長な空の 'Case Else' ステートメント
| |
| |
冗長な「私」。修飾子
| |
冗長な「MyBase」修飾子
| |
冗長な「MyClass」修飾子
| |
| |
冗長修飾子
| |
冗長なカッコを除去
| |
到達不能コード
| |
未使用のインポート句
| |
暗黙的な 'ByVal' 修飾子を使用する
| |
暗黙の型付き変数宣言を使用する
| |
暗黙の型付き変数宣言を使用する (明らか)
|
シンボル宣言の冗長性 (30 インスペクション)
このカテゴリにはコードインスペクションが含まれ、ほとんどが重大度レベルが警告であり、空の未使用のシンボル宣言を検出します。
インスペクション | |
---|---|
継承されない仮想(オーバーライド可能な)メンバーを持つクラス (非公開アクセシビリティ)
| |
継承されない仮想(オーバーライド可能な)メンバーを持つクラス (private アクセス)
| |
エンティティはその名前を取得するためにのみ使用されます (非公開アクセシビリティ)
| |
エンティティはその名前を取得するためにのみ使用されます (private アクセス)
| |
メソッドの戻り値は使用されません (非公開アクセシビリティ)
| |
メソッドの戻り値は使用されません (private アクセス)
| |
| |
アクセスされないローカル変数は、「out」パラメーター値を破棄するためにのみ使用されます。
| |
アクセスされていないプライマリコンストラクターパラメーター
| |
パラメーターは前提条件チェックにのみ使用されます (非公開アクセシビリティ)
| |
パラメーターは前提条件チェックにのみ使用されます (private アクセス)
| |
パラメーター出力値は常に破棄されます (非公開アクセシビリティ)
| |
パラメーター出力値は常に破棄されます (private アクセス)
| |
| |
| |
型メンバーは基本型でアクセスされません (非公開アクセシビリティ)
| |
型メンバーは基本型でアクセスされません (private アクセス)
| |
| |
| |
型メンバーは上書きでのみ使用されます (非公開アクセシビリティ)
| |
型メンバーは上書きでのみ使用されます (private アクセス)
| |
未使用のラベル
| |
| |
| |
| |
| |
未使用の位置パラメーター
| |
未使用の型パラメーター
| |
仮想(オーバーライド可能な)メンバーはオーバーライドされません (非公開アクセシビリティ)
| |
仮想(オーバーライド可能な)メンバーはオーバーライドされません (private アクセス)
|
スペルの問題 (3 インスペクション)
これらのインスペクションは、さまざまな状況でタイプミスを検出します。
インスペクション | |
---|---|
| |
| |
|
関連ページ:
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
コードインスペクション
ReSharper は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション ReSharper が提供するコードの種類を調べるには、異なる言語の ReSharper コードインスペクションの全リストをご覧ください。コードインスペクションは、以下のグループに分...
設計時にコードの問題を分析する
ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの問題は、重大度に従ってエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。デザインタイムインスペクションの機能:ReSharper によって実行されるデザインタイムコードインスペクションを説明するために、エディターに...
特定の範囲でコードの問題を見つける
設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。ただし、ReSharper を使用すると、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。必要に応じてインスペクション結果を共有することもできます。開始コードインスペクション:ソリューション、プロジェクト、カスタムスコープのコードをインスペクションするソリューションワイドのインスペクションの結果(たとえば、未使用のパブ...
コード検査: 名前空間がファイルの場所に対応していません
デフォルトでは、ReSharper は、各クラスが表示される名前空間がプロジェクト内の場所と一致するとみなします。プロジェクトの「ルート」名前空間は、プロジェクトのプロパティで定義されています。上記の結果、プロジェクトレベルのすべてのコード要素が名前空間に現れることが予想され、それ以外の場合は警告が発行されます。フォルダーの導入により、名前空間はより深くなります。以下の例では、という名前のフォルダーは、名前空間に表示されるために、その中に含まれるすべてのアイテムを必要とします。ただし、追加の名前...
ローカライゼーションインスペクションとクイックフィックス
ReSharper は、リソースファイル内のローカライズ可能な文字列、リソースの問題などを検出することにより、アプリケーションをローカライズするのに役立つ多数のコードインスペクションを提供します。これらのインスペクションは、オープンドキュメントの設計時にローカライゼーションの問題を検出し、ソリューション全体まで特定の範囲でローカライゼーションの問題を見つけることができます。設計時には、検出された問題があなたの注意を引くためにハイライトされます。ハイライトされた問題を解決するために、ReSharp...