6

ユーザーのプロジェクトで Java コードを変更する Eclipse プラグインに取り組んでいます。

基本的にこのプラグインの結果は、一部のメソッドに Java アノテーションが追加されているため、

void foo() { ... }

になる

@MyAnnotation
void foo() { ... }

ただし、そのようには見えません。新しく挿入された注釈のインデントがおかしい (具体的には、新しい注釈が行の左側にずっとある)。ファイルにすべての変更を加えてから、プログラムで "Correct Indentation" を呼び出したいと考えています。

誰もこれを行う方法を知っていますか? ここまたはJDTフォーラムで答えが見つかりません。関連すると思われるすべてのクラス(IndentAction、JavaIndenter)は、使用しないはずの内部パッケージにあります...

ありがとう!

4

2 に答える 2

6

まあ、私が望む解決策を見つけたかもしれないと思います。質問する前に検索にもっと時間を費やすべきだったと思います...しかし、将来の参考のために、ここに私がしたことを示します! 良いものはToolFactoryにありました...

import org.eclipse.jdt.core.ToolFactory;
import org.eclipse.jdt.core.formatter.CodeFormatter;
import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.text.edits.TextEdit;
import org.eclipse.jdt.core.ICompilationUnit;

...

ICompilationUnit cu = ...

...

CodeFormatter formatter = ToolFactory.createCodeFormatter(null);
ISourceRange range = cu.getSourceRange();
TextEdit indent_edit =
  formatter.format(CodeFormatter.K_COMPILATION_UNIT, 
    cu.getSource(), range.getOffset(), range.getLength(), 0, null);
cu.applyTextEdit(indent_edit, null);

cu.reconcile();

これにより、ファイル全体が再フォーマットされます。再フォーマットする必要が少ない場合は、他のオプションがあります...

于 2010-05-20T13:10:22.420 に答える
-1

Java コードを処理するときにインデントを追加する方がおそらく簡単です。

Eclipse プラグインは、void foo() { ... }行を読み取って を追加する必要がありました@MyAnnotationよね? Java 行からインデントを取得し、注釈をインデントに追加するだけです。

于 2010-05-20T12:42:06.750 に答える