Este ejemplo de código pertenece a la serie de tutoriales Eclipse JDT.
El objetivo de este ejemplo de código es agregar un comentario al siguiente código.
public class Main { public static void main(String[] args) { int i = 1; System.out.println(i); } public static void add() { int i = 1; System.out.println(i); } } |
Después de agregar un comentario antes de la primera declaración del primer método, se convierte en lo siguiente:
public class Main { public static void main(String[] args) { //mycomment int i = 1; System.out.println(i); } public static void add() { int i = 1; System.out.println(i); } } |
Para agregar un comentario al código fuente de Java, necesitamos usar ASTRewrite. El tutorial de la guía del programador de eclipse no funciona. La razón principal falta en la siguiente declaración:
unit.getBuffer().setContents(document.get()); |
Aquí está el código de trabajo probado bajo Eclipse Indigo.
private void AddComments() throws MalformedTreeException, BadLocationException, CoreException { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("testAddComments"); IJavaProject javaProject = JavaCore.create(project); IPackageFragment package1 = javaProject.getPackageFragments()[0]; //get first compilation unit ICompilationUnit unit = package1.getCompilationUnits()[0]; // parse compilation unit CompilationUnit astRoot = parse(unit); //create a ASTRewrite AST ast = astRoot.getAST(); ASTRewrite rewriter = ASTRewrite.create(ast); //for getting insertion position TypeDeclaration typeDecl = (TypeDeclaration) astRoot.types().get(0); MethodDeclaration methodDecl = typeDecl.getMethods()[0]; Block block = methodDecl.getBody(); ListRewrite listRewrite = rewriter.getListRewrite(block, Block.STATEMENTS_PROPERTY); Statement placeHolder = (Statement) rewriter.createStringPlaceholder("//mycomment", ASTNode.EMPTY_STATEMENT); listRewrite.insertFirst(placeHolder, null); TextEdit edits = rewriter.rewriteAST(); // apply the text edits to the compilation unit Document document = new Document(unit.getSource()); edits.apply(document); // this is the code for adding statements unit.getBuffer().setContents(document.get()); System.out.println("done"); } |
# No es necesario ejecutar el código anterior dentro de un proyecto de complemento de eclipse, pero es más fácil hacerlo.