Je ne suis pas assez confiant pour dire catégoriquement que vous devez écrire un plugin pour utiliser l'ASTVisitor, mais c'est le moyen le plus simple. Trouver un code de plugin simple qui crée un bouton ou quelque chose que vous pouvez appuyer sur et lancer la course de votre code. Il y a un exemple de plugin dans l'environnement de développement du plugin qui fait cela (téléchargez la version appropriée d'Eclipse si vous ne l'avez pas).
Création d'un projet de plugin:
Pour créer un projet de plugin obtenu à l'explorateur de paquet et un clic droit ou ouvrez le menu Fichier. Sélectionnez le premier élément "nouveau ..." cela ouvre un sous-menu dans lequel vous sélectionnez "autre ...". La "nouvelle" boîte de dialogue s'ouvre. Ouvrez le dossier "développement du plug-in" et sélectionnez "projet de plug-in".
suivante Cliquez plusieurs fois, entrez les informations nécessaires jusqu'à la page suivante:
Voici le premier échantillon « Bonjour tout le monde » crée un menu dans votre 2ème niveau éclipse. Exécutez l'éclipse de 2ème niveau en allant dans le plugin.xml du nouveau projet, allez dans la vue d'ensemble des onglets.
Vous verrez une page comme ceci:
cliquez sur "lancer une application Eclipse", et une autre éclipse sera lancé avec votre nouveau plugin et en cours d'exécution. Cliquez sur le bouton d'action de l'échantillon dans cette éclipse de 2ème niveau pour voir une action douce.
Maintenant, vous pouvez aller de l'avant et remplacer le code d'action avec ce que vous voulez. Dans ce cas, créer et démarrer une opération de visite.
Pour créer un ASTVisitor:
Créer une classe qui étend ASTVisitor de sorte que vous pouvez ajouter votre propre code.
- preVisit (ASTNode) fait un traversal pré-commande de l'AST
- postVisit (ASTNode) fait un traversal postorder de l'AST
- visite (...) inspecte un noeud spécifique
Ajoutez quelque chose comme ceci à votre visiteur:
private void startVisit(IFile file) {
ICompilationUnit icu = JavaCore.createCompilationUnitFrom(file);
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
parser.setSource(icu);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(this);
}
Maintenant ajoutez le code à votre action de bouton de presse qui crée votre visiteur un nd appelle cette fonction:
MyVisitor mv = new MyVisitor();
mv.startVisit(...);
Pour obtenir un IFile(ici, vous aurez besoin d'être un plug-in ou vous aurez l'erreur que vous avez signalé):
ResourcesPlugin.getWorkspace().getRoot().getProject(...).getFile(...);
Remplacez les noms de projet et de fichier (chaînes) appropriés pour l'ellipse.
Maintenant, chaque fois que vous appuyez sur le bouton, le fichier est visité, et le code que vous avez entré sera exécuté aux moments appropriés (il est très judicieux d'imprimer chaque ASTNode avant ou après).
Mais comment créer un IFile? J'ai toujours besoin de "IWorkspaceRoot root = ResourcesPlugin.getWorkspace(). GetRoot();" droite? Mais cela va me faire "Exception dans le fil" principal "java.lang.IllegalStateException: Workspace est fermé." Ai-je besoin de créer un projet de plugin dans eclipse pour le faire? Cos actuellement j'utilise le principal pour courir. Comment créer un projet de plugin? – yeeen