ヘルパー関数がまだインポートされていない場合はインポート宣言を追加: カスタム ESLint ルールの修正による強化されたソリューション
P粉312195700
P粉312195700 2024-03-28 09:26:00
0
2
281

変数関数呼び出し、特に foo.value.toString() をヘルパー関数 getStringValue(foo) に置き換えたいユースケースがあります。見つかった場合は、その修正を使用して CallExpression ノードのテキストを置き換えることができるため、現在のルール修正は次のようになります:

リーリー

この方法でこのエラーを自動的に修正する場合の問題は、getStringValue がファイルにインポートされている場合とされていない場合があることです。この修正により次の動作が行われるようにしたいです:

  1. 関数がファイルにインポートされている場合、追加のアクションは必要ありません。
  2. 関数がインポートされていないが、それに含まれるファイル モジュールがインポートされている場合は、この関数をモジュールのインポートに追加してください。
  3. 関数もそれに含まれるファイル モジュールもインポートされていない場合は、関数と一緒にモジュールをインポートします。

ドキュメントから理解する限り、fixer または context オブジェクトを使用してルート ESTree ノードにアクセスする簡単な方法はありません。最も近いのは SourceCode.getText() です。これは、インポートを解決するためにソース テキストを解析する必要があることを意味します。むしろ AST 全体と直接やり取りしたいと考えています。この自動インポート プロセスを実行する最良の方法は何ですか?

P粉312195700
P粉312195700

全員に返信(2)
P粉596161915

ここで少し安全でない場合は、ユーザーが getStringValue 関数をファイル内でローカルに再定義していないと仮定することができます (このルールが適用されるコードベースがある場合、通常は安全な仮定です)。 。

この場合、最良の方法は、セレクターを使用してインポートを確認することです。例:

リーリー
いいねを押す +0
P粉098979048

context オブジェクトから AST ルート ノードを抽出する簡単な方法があることがわかりました。これは context.getSourceCode().ast にあります。次のロジックで修正を書き直しました:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!