情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Eclipseでなぜかリファクタリング(Rename)が使えないときは

Eclipse (60) Java (38)

Eclipseを使っていると、なぜかRename機能が使えないことがあります。その対処法についてメモ。

症状

例えば、変数の名前変更をコンテキストメニュー(右クリック)の「Refactoring>Rename」や、ショートカット(Alt+Shift+R)から実行しても、名前変更モードに入らない(選択している変数が四角で囲まれない)ことがあります。

当然ですが、このまま名前を変更しても、他の場所に変更は反映されず、ただ編集しているだけになってしまいます。

詳しい症状

よく観察してみると、本来カーソルが変数名のどこに位置していても発動するはずのリファクタリング(Rename)が、特定の位置でだけ動くようになっていたりします。

そして、その状態で名前変更モードに入ると、四角いカコミが、変数名とは少しずれた位置に表示されることがわかりました。

このことから、リファクタリングを担当しているプラグインが認識している文字の位置と、実際にエディタが表示している文字の位置との間に何らかの相違が発生していると推測できます。

このような文字位置の相違は、選択中の変数のハイライト表示でも良く発生します。というわけで、そのときと同じ対処法を実施してみます。

対策

根本的な対策には成りませんが、ファイルを開き直す(エディタを閉じてから開く)ことで、この症状は治ります。

一方で、編集中のファイルを「保存」しても、直りません。

類似の問題

類似の問題として、Renameは実行できた物の、「A local variable declaration or reference must be selected to activate this refactoring」というエラーが発生する場合がありますが、これもファイルを開き直すことによって回避できます。今ひとつよく分からないエラーですが、これも選択位置がずれてしまっているのかもしれません。

同様に、行の不整合が発生することもあります。

なんらかのBreakPointでSuspendしているとき、Debugビューに、現在のコールスタックが表示されます。そしてそのとき、メソッドの呼び出し元の行番号が「line:1」という形で表示されます。

この行番号が、実際の呼び出し元と違う場合があるのです

これも、同様にファイルを一度開き直すことで復活します。

感想

なぜか頻繁にずれてしまいます。致命傷にはならないのですが、ちょっとした不便が至る所に表れるので、いざ直したい、と思ったときに直せないとストレスが溜まってしまいます。

根本的な対策が見つかれば良いのですが、現状はファイルを開き直すことで対処していきたいと思います。

コメント(0)

新しいコメントを投稿