JavaScript のコードインスペクション
JavaScript では、ReSharper 2024.3 は 2 種類のコードインスペクションを提供します。壊れた構文、未解決のシンボル、コンパイラーエラーなどのエラーを検出する 4 つのインスペクション (いずれも構成または無効にすることはできませんインスペクション)、および 117 の独自コードインスペクション (いずれも無効にしたり、重大度レベルを変更したりできます)。
これらのコードインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出するのに役立ち、さらに特定のスコープ内でコードの問題を見つけることもできます。
設定可能な JavaScript インスペクションは、カテゴリ別にグループ化されて以下にリストされています。
一般的なプラクティスとコードの改善 (3 インスペクション)
このカテゴリは、主にコードの可読性に影響する中程度の重大度の問題を探し出すインスペクションをグループ化します。
インスペクション | |
---|---|
ローカル変数宣言と代入を結合する
| |
ステートメントの終了がコードスタイルの設定と一致しない
| |
将来の予約語の使用
|
制約違反 (1 インスペクション)
このカテゴリには、コードインスペクションが含まれ、ほとんどの場合、警告の重大度レベルがあり、ReSharper のコードアノテーションなどのシンボル属性に関連する違反やその他の同様の問題が検出されます。
インスペクション | |
---|---|
|
文法の問題 (4 インスペクション)
このカテゴリのインスペクションは、文字列リテラルとドキュメントコメントの文法上の問題を報告します。
インスペクション | |
---|---|
| |
| |
| |
|
言語使用の機会 (9 インスペクション)
このカテゴリには、コードインスペクションが含まれ、ほとんどの場合、より高度な言語構造を使用できる場合に通知する提案の重大度レベルが含まれます。これらのインスペクションは、古い言語バージョンの構文を検出し、より新しい言語バージョンの機能の使用を提案します。サポートされているほとんどの言語では、言語バージョンを自動的に検出するか、手動で設定できます。
インスペクション | |
---|---|
プロパティの一連の未定義チェックは、構造化解除に置き換えることができます
| |
中間ローカル変数は冗長であり、安全にインライン化できます
| |
中間ローカル変数は、構造化スワップ式で置き換えることができるため、冗長です。
| |
ローカル変数は内部ブロックに安全に移動できます
| |
文字列連結はテンプレート文字列に変換できます
| |
後続のインデクサーは、分割代入宣言または代入に置き換えることができます
| |
オブジェクトリテラルフィールド内の後続のインデクサーは、構造化解除により簡略化できます
| |
'var' 変数を 'let' 変数にすることができます
| |
変数を一定にすることができます
|
潜在的なコード品質問題 (68 インスペクション)
このカテゴリには、主にエラーまたは警告レベルで重大な問題(コードのにおい)を検出するインスペクションが含まれます。このカテゴリには、ローカライゼーションの支援を確実にするインスペクションも含まれます。
インスペクション | |
---|---|
| |
配列の末尾の要素が省略されます
| |
条件文内の変数への代入
| |
暗黙的に宣言されたグローバル変数への代入
| |
定数への代入
| |
シンボルを解決できません
| |
外部スコープのループで変更された変数上の Closure
| |
オブジェクトリテラルではコンマが必要です
| |
コンマはここでは無効です
| |
誤った値と 'typeof' 式の比較
| |
条件は常に一定
| |
コンストラクター呼び出しが使用されていないか、副作用として使用されている可能性があります。
| |
宣言は外側のスコープから別の宣言を隠す
| |
重複するプロパティの宣言
| |
重複スイッチラベル
| |
ES 5 以下の場合、ECMAScript 2015 機能の使用
| |
ES 2015 以下の場合の ECMAScript 2016 機能の使用
| |
XML doc コメントリファレンスのエラー
| |
言語レベルを安定に設定した場合の実験的な機能の使用
| |
式は常に一定です
| |
'throw' ステートメントの後に式が必要です
| |
ネイティブオブジェクトのプロトタイプを拡張する
| |
ヒューリスティックに到達できないコード
| |
XML コードコメントの構文が正しくありません
| |
'import' キーワードはここでは許可されていません
| |
一貫性のない関数の戻り値
| |
無効な JSON 構文
| |
非関数式の呼び出し
| |
呼び出された式は関数値ではありません
| |
JSON 検証に失敗しました
| |
字句宣言はブロック内でのみ宣言できます
| |
ローカル関数は後で再定義される
| |
L 値期待誤差
| |
内部関数の 'this' 修飾子の誤用
| |
'for for' エラーの複数の宣言
| |
割り当てられていない定数
| |
括弧で囲まれていないオブジェクトの非構造化代入は、式ステートメントで使用できません
| |
すべてのコードパスが値を返すわけではありません
| |
オブジェクトプロパティ宣言が必要です
| |
ネイティブオブジェクトのプロトタイプを上書きする
| |
パラメーター名 'arguments' があらかじめ定義された JS の関数スコープ変数と衝突する
| |
パラメーター値が使用されていません
| |
参照コメントのパスが見つかりません
| |
考えられる間違い: あいまいなラムダブロックとオブジェクトリテラル
| |
プロパティ getter にはパラメーターを設定できません
| |
プロパティ setter には単一のパラメーターが必要です
| |
修飾子は 'null' でも 'undefined' でもかまいません
| |
修飾子は 'null' または 'undefined' です。
| |
let/const の再宣言
| |
グローバルスコープの値を持つ return 文
| |
同様の表現の比較
| |
文が改行で間違って壊れている可能性があります
| |
派生クラスのコンストラクターで 'this' にアクセスする前に 'super' を呼び出す必要があります
| |
疑わしい表現表現
| |
「for in」ループの本体には .hasOwnProperty() チェックはありません。これにより、プロトタイププロパティが列挙されます。
| |
オブジェクトプロパティリストの末尾に余分なコンマがあると、エラーが発生する場合があります
| |
トリプルスラッシュディレクティブは、ファイルの先頭にのみ有効です
| |
未割り当てのローカル変数の使用
| |
割り当てられていないローカル変数の使用
| |
ループ本体の外側で 'break' または 'continue' を使用する
| |
休憩または継続後の式の使用
| |
暗黙的に宣言されたグローバル変数の使用
| |
おそらく割り当てられていないプロパティまたはグローバル変数の使用
| |
グローバルな文脈での 'this' の使用
| |
'arguments.caller' と 'arguments.callee' の使用
| |
強制等価の使用 ('null' または 'undefined' を使った強制等価演算子の使用)
| |
| |
変数は宣言される前に使用されます
|
コードの冗長性 (4 インスペクション)
このカテゴリのコードインスペクションは、コードの可読性とスタイルに影響を与える冗長性とデッドコードを探し、安全に削除できます。一部のコードの冗長性は自動的に修正できず、それらのクイックフィックスはインタラクティブモードで実行され、ユーザー入力が必要です。ただし、冗長性の大部分は、スコープ内の修正またはコードのクリーンアップを使用して、ユーザーの操作なしで修正できます。
インスペクション | |
---|---|
割り当てられた値は使用されません
| |
冗長ブロック
| |
冗長な空の finally ブロック
| |
到達不能コード
|
シンボル宣言の冗長性 (11 インスペクション)
このカテゴリにはコードインスペクションが含まれ、ほとんどが重大度レベルが警告であり、空の未使用のシンボル宣言を検出します。
インスペクション | |
---|---|
ローカル変数の代入自体は冗長です
| |
重複するローカル宣言
| |
冗長 'else' ブロック
| |
冗長ローカルクラス名
| |
冗長ローカル関数名
| |
| |
| |
未使用のローカル変数 / 関数 / クラス
| |
未使用のパラメーター
| |
継承されたメンバーの未使用パラメーター
| |
未使用のプロパティまたは関数
|
スペルの問題 (3 インスペクション)
これらのインスペクションは、さまざまな状況でタイプミスを検出します。
インスペクション | |
---|---|
| |
| |
|
厳格モード違反 (9 インスペクション)
インスペクション | |
---|---|
'strict mode' の非修飾識別子で 'delete' を呼び出す
| |
'strict モード ' で重複するパラメーター宣言
| |
'strict モード ' での重複したプロパティ宣言
| |
'strict モード ' で使用する 8 進リテラルとエスケープシーケンス
| |
「strict モード」での「arguments.caller」と「arguments.callee」の使用
| |
「厳密モード」での「eval」/「arguments」名の使用
| |
「厳密モード」での将来の予約済みキーワードの使用
| |
宣言されていないグローバル変数の使用
| |
「厳密モード」での「with」ステートメントの使用
|
構文スタイル (5 インスペクション)
このカテゴリのインスペクションは、コード構文スタイルの違反を検出します。ほとんどのコードインスペクションとは対照的に、これらのインスペクションは、ReSharper オプション Alt+R, O の ページで構成された対応するコードスタイルルールに応じて、同じコード構造をコードの問題として検出するかしないかを選択できます。また、コードクリーンアップを使用して、これらのインスペクションが検出した問題を修正することもできます。
インスペクション | |
---|---|
関数は宣言される前に使用されます
| |
関数が宣言されている範囲外で使用されている
| |
文字列リテラルに関する非準拠の引用符
| |
変数は宣言される前に内部スコープで使用されます
| |
変数は宣言されているスコープの外で使用されます
|
関連ページ:
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
コードインスペクション
ReSharper は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション ReSharper が提供するコードの種類を調べるには、異なる言語の ReSharper コードインスペクションの全リストをご覧ください。コードインスペクションは、以下のグループに分...
設計時にコードの問題を分析する
ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの問題は、重大度に従ってエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。デザインタイムインスペクションの機能:ReSharper によって実行されるデザインタイムコードインスペクションを説明するために、エディターに...
特定の範囲でコードの問題を見つける
設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。ただし、ReSharper を使用すると、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。必要に応じてインスペクション結果を共有することもできます。開始コードインスペクション:ソリューション、プロジェクト、カスタムスコープのコードをインスペクションするソリューションワイドのインスペクションの結果(たとえば、未使用のパブ...
ローカライゼーションインスペクションとクイックフィックス
ReSharper は、リソースファイル内のローカライズ可能な文字列、リソースの問題などを検出することにより、アプリケーションをローカライズするのに役立つ多数のコードインスペクションを提供します。これらのインスペクションは、オープンドキュメントの設計時にローカライゼーションの問題を検出し、ソリューション全体まで特定の範囲でローカライゼーションの問題を見つけることができます。設計時には、検出された問題があなたの注意を引くためにハイライトされます。ハイライトされた問題を解決するために、ReSharp...
スコープを修正
ほとんどのクイックフィックスは、キャレットで現在の問題を修正できますが、中には (たとえば、未使用のディレクティブを削除する、フィールドを読み取り専用にする、冗長なキャストの除去など)、現在のファイル、現在のプロジェクト、ソリューション全体など、より大きな範囲で問題を自動的に見つけて修正できるものもあります。範囲内の修正を適用する:このような修正は、アクションリストの横に表示される小さな矢印で識別できます。範囲内の修正を適用する ReSharper のインスペクションでハイライトされているコード...