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