VB.NET のコードインスペクション
VB.NET では、JetBrains Rider 2024.1 は 2 種類のコードインスペクションを提供します。壊れた構文、未解決のシンボル、コンパイラーエラーなどのエラーを検出する 259 個のインスペクション (いずれも構成または無効にすることはできませんインスペクション)、および 271 個の独自コードインスペクション (いずれも無効にしたり、重大度レベルを変更したりできます)。
これらのコードインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出するのに役立ち、さらに特定のスコープ内でコードの問題を見つけることもできます。
以下に、構成可能な VB.NET インスペクションを、カテゴリ別にグループ化して示します。
コード通知 (1 インスペクション)
このカテゴリは、コードインスペクションをマイナーな重大度でグループ化します。
インスペクション | |
---|---|
非アクティブなプリプロセッサーブランチ
|
一般的なプラクティスとコードの改善 (112 インスペクション)
このカテゴリは、主にコードの可読性に影響する中程度の重大度の問題を探し出すインスペクションをグループ化します。
インスペクション | |
---|---|
階層のアノテーション複製
| |
自動プロパティは取得専用にすることができます (非公開アクセシビリティ)
| |
自動プロパティは取得専用にすることができます (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) は文化固有のものです)
| |
構造体を読み取り専用にすることができます
| |
構造体メンバーを読み取り専用にすることができます
| |
try-catch と try-finally 文をマージすることができます
| |
配列作成式を使用する
| |
配列作成式を使用する
| |
代わりに First() を使用する
| |
Any() メソッドを使用する
| |
Any() メソッドを使用する
| |
Any() メソッドを使用する
| |
Any() メソッドを使用する
| |
Any() メソッドを使用する
| |
メソッド IsInstanceOfType(..)を使用します。
| |
'TypeOf .. Is ..' 演算子を使用します
| |
'TypeOf .. Is ..' 演算子を使用します
|
コンパイラーの警告 (24 インスペクション)
このカテゴリのインスペクションは、コンパイルする前にコンパイラーの警告を検出します。
インスペクション | |
---|---|
| |
非同期メソッドには 'Await' 演算子がありません
| |
この呼び出しは待機されていないため、呼び出しが完了する前に現在のメソッドの実行が続行されます: 呼び出しの結果に「Await」演算子を適用することを検討してください。
| |
フィールドが使用されることはありません
| |
| |
| |
| |
インポート '名前' に指定された名前空間またはタイプにパブリックメンバーが含まれていないか、見つからない
| |
ネームスペースはこのプロジェクトのデフォルトネームスペースでなければなりません
| |
アクセスされていないフィールド
| |
アクセスされていないローカル変数
| |
冗長 DirectCast を等しい値の型に変換する
| |
X から Y への変換時にランタイムエラーが発生する可能性が高い
| |
X を Y に変換するとランタイムエラーが発生することがあります
| |
| |
パラメーターに適用された CallerArgumentExpressionAttribute は、自己参照であるため、効果がありません。
| |
パラメーターに適用された CallerArgumentExpressionAttribute は効果がありません。無効なパラメーター名で適用されています。
| |
割り当てられていないフィールド
| |
割り当てられていない読み取り専用フィールド
| |
未使用のローカル変数
| |
廃止されたメンバーを使用する
| |
| |
| |
XML コメントに解決できなかった 'cref' 属性のタグがあります
|
制約違反 (2 インスペクション)
このカテゴリには、コードインスペクションが含まれ、ほとんどの場合、警告の重大度レベルがあり、JetBrains Rider のコードアノテーションなどのシンボル属性に関連する違反やその他の同様の問題が検出されます。
インスペクション | |
---|---|
| |
|
文法の問題 (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()' を呼び出する
| |
| |
ダブルチェックロックパターンの誤った実装の可能性: チェックされたフィールドへの可能な複数の書き込みアクセス。
| |
ダブルチェックロックパターンの誤った実装の可能性: チェックされたフィールドへの読み取りアクセス。
| |
| |
| |
" 私 " への書き込み可能
| |
おそらく不純な 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 インスペクション)
これらのインスペクションは、さまざまな状況でタイプミスを検出します。
インスペクション | |
---|---|
| |
| |
|
関連ページ:
![](https://resources.jetbrains.com/help/img/rider/2024.1/code_analysis_target_framework.png)
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、JetBrains Rider はサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかにかかわらず、コードインスペクションを特定の範囲でいつでも実行できます。「鉛筆」ウィジェットを使用して、エディターから直接インスペクション設定をすばやく調整するか、設定でより詳細な構成を行うことができます。を押すか、メニューから(W...
![](https://resources.jetbrains.com/help/img/rider/2024.1/Code_Analysis__Code_Highlighting__Warnings__2.png)
コードインスペクション
JetBrains Rider は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション JetBrains Rider が提供するコードの種類を調べるには、異なる言語の JetBrains Rider コードインスペクションの全リストをご覧ください。コードイ...
![](https://resources.jetbrains.com/help/img/rider/2024.1/code_analysis_sample.png)
設計時にコードの問題を分析する
JetBrains Rider は、エディターでコードファイルを開くとすぐに、コードファイルが閉じられるまで分析を開始します。検出されたすべてのコードの問題は、重大度に応じてエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のエラーストライプにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。デザインタイムインスペクションの機能:デザイン時のインスペクション機能は、Rider エディターの基本機能への主要...
![](https://resources.jetbrains.com/help/img/rider/2024.1/inspection_by_name.png)
特定の範囲でコードの問題を見つける
設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。しかし、JetBrains Rider では、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。開始コードインスペクション:ソリューション、プロジェクト、カスタムスコープのコードをインスペクションするソリューションワイドのインスペクションの結果(たとえば、未使用のパブリックメンバー)をレポートに含めるかどうかを決定する
![](https://pleiades.io/icons/rider.png)
コード検査: 自動プロパティは取得専用にすることができます (非公開アクセシビリティ)
C# 6.0 から、get-only 自動プロパティを定義できます。これは(読み取り専用フィールドと同様に)コンストラクターまたは初期化子を介してのみ初期化できます。JetBrains Rider は、コンストラクター / 初期化子から初期化され、書き込みの使用がない自動プロパティの冗長アクセサーを検出して削除できます。以下の例では、不変クラスを想定しています。そして、プロパティの値がコンストラクターの NULL 可能性をチェックされると、null チェックをしなくても安全に使用できます。ただし...
![](https://resources.jetbrains.com/help/img/rider/2024.1/namespace_folder_properties.png)
コード検査: 名前空間がファイルの場所に対応していません
デフォルトでは、JetBrains Rider は、各クラスが表示される名前空間がプロジェクト内の場所と一致するとみなします。プロジェクトの「ルート」名前空間は、プロジェクトのプロパティで定義されています。上記の結果、プロジェクトレベルのすべてのコード要素が名前空間に現れることが予想され、それ以外の場合は警告が発行されます。名前空間は、フォルダーの導入により深くなります。以下の例では、という名前のフォルダーが名前空間に表示されるすべての項目を必要とします。しかし、余分な名前空間要素を追加するため...