変数関数呼び出し、特に foo.value.toString()
をヘルパー関数 getStringValue(foo)
に置き換えたいユースケースがあります。見つかった場合は、その修正を使用して CallExpression
ノードのテキストを置き換えることができるため、現在のルール修正は次のようになります:
この方法でこのエラーを自動的に修正する場合の問題は、getStringValue
がファイルにインポートされている場合とされていない場合があることです。この修正により次の動作が行われるようにしたいです:
ドキュメントから理解する限り、fixer
または context
オブジェクトを使用してルート ESTree ノードにアクセスする簡単な方法はありません。最も近いのは SourceCode.getText()
です。これは、インポートを解決するためにソース テキストを解析する必要があることを意味します。むしろ AST 全体と直接やり取りしたいと考えています。この自動インポート プロセスを実行する最良の方法は何ですか?
P粉5961619152024-03-29 00:56:42
ここで少し安全でない場合は、ユーザーが getStringValue
関数をファイル内でローカルに再定義していないと仮定することができます (このルールが適用されるコードベースがある場合、通常は安全な仮定です)。 。
この場合、最良の方法は、セレクターを使用してインポートを確認することです。例:
リーリーP粉0989790482024-03-29 00:43:02
context
オブジェクトから AST ルート ノードを抽出する簡単な方法があることがわかりました。これは context.getSourceCode().ast
にあります。次のロジックで修正を書き直しました: