Bonjour !
Mon projet nécessite que je lise du code source , que je l'analyse, et que je puisse le modifier, puis créer la class associée et la loader à chaud dans le programme.
Ou puis je piocher des API pour cela
Merci.
Bonjour !
Mon projet nécessite que je lise du code source , que je l'analyse, et que je puisse le modifier, puis créer la class associée et la loader à chaud dans le programme.
Ou puis je piocher des API pour cela
Merci.
Salut,
Ce serais pas une sorte de 'debugger' d'éclipse?
Tu peux modifier le code source en live et tout est dynamique.
Tu peux regarder de ce coté la...
a++
"que je lise le code source" --> n'importe quel éditeur de texte est capable de le faire (bloc-note sous windows, vi sous unix)
"que je l'analyse et que je puisse le modifier" les applications citées au dessus le font également.
"puis créer la classe associée" --> javac (le compilateur) est là pour ça.
"loader à chaud dans le programme" --> ????? loader une classe, c'est faisable via le classloader mais tu parles de quel programme ? un programme que t'as écrit en qbasic 1.0 ? des précisions sont nécessaires...
Je fais un logiciel capable d'auto analyser son code et s'auto compléter. Par exemple si le logiciel trouve que pour son fonctionnement il lui manque une méthode ou des conditions dans la méthodes etc... il va reprendre le code source de la classe correspondante, le compléter, le compiler pour enfin le charger à chaud.
Tout est automatiser le facteur humain n'intervient pas dans ce processus.
Je pense que je dois commencer par faire un AST du code JAVA. Puis compléter l'AST, et enfin demander à l'AST de s'écrire sur un fichier texte .java. Après bien sur il y a la phase de compilation, et je pense pouvoir trouver Des classloaders capable de charger à chaud (genre techno de plugin).
Je suis pas du tout un pro de ANTLR; peut etre y a t-il une API d'analyse de code toute faite quelque part.
Bonjour Alec6,
J'ai passe moi aussi pas mal de temps sur ANTLR, et c'est quand meme super complique. Je voulais donner la fonctionnalité de pouvoir ajouter des champs/methodes dans un fichier JAVA dans Akrogen , plugin Eclipse de génération de code.
Eclipse propose une API JDT qui te permet de gerer des fichiers JAVA (ajout/suppression des methodes....), qui est super bien faite. Tu verras ce projet est decoupé en plusieurs lib (moi j'utilise le core), mais tu peux gerer le debug, les annotations Java5 (APT)...
Apres je ne sais pas si c facile d'utiliser cette API en dehors d'Eclipse.
Bon courage
Angelo
Bonjour.
Une autre alternative serait de ne pas passer par la génération d'un code source Java et de bosser directement avec le bytecode, ce qu'on appelle l'instrumentation.
Pour ce faire, je te conseille vivement la librairie asm d'ObjectWeb.
Bonne chance.
Je suis le seul à ne pas avoir compris la problématique ?
En tout cas, désolé de t'avoir pris pour un débutant, cela dit, ce sujet me semble très intéressant.
Bonjour,
je ne connaissais pas asm (merci djo). Mais dans le même type d'API, il y a cglib qui permet de modifier le bytecode à la volée.
Je n'ai jamais utilisé cette librarie mais je sais qu'elle utilisé dans beaucoups de gros projets comme Hibernate (pour gérer le mode lazy) ou encore Spring (pour gérer l'AOP).
Angelo
Donc j'ai regardé ASM, c'est super professionnelle, mais j'ai pas vu qu'on pouvait travailler le code in the small, c'est à dire rentrer dans le code d'une méthode et voir l'enchainement des instructions. Par contre on peut ajouter du code avant et après à ce que j'ai compris. En tout cas je suis content de l'avoir découvert pour ma culture.
Je crois que j'ai besoin d'un parser de code JAVA qui me produise un Jolie AST, mais je suis pas doué avec ANTLR qui effectivement n'est pas simple, ni didactique (gout perso).
Pour JDT je suis décu, c'est super, sauf que je peux pas embarcer la lib core, elle est couplé à d'autres lib. Ca fait un gros package.
A bien quelq'un quelque part qui à fait une API pour travailler sur le code JAVA...
Pour la compilation et le chargement à chaud je peux toujours me débrouillé.
Bonjour.
Si tu tiens à travailler directement sur la source, tu peux toujours utiliser ANTLR, même si tu ne maitrises pas sa syntaxe. D'ailleurs, se serait un projet titanesque d'essayer d'ecrire la grammaire de Java.
Pour ce faire, rien de plus simple : tu cherches une grammaire toute prête ne demandant qu'à être utilisée, la faire passer par ANTLR qui va te générer l'AST.
Une rapide recherche sur google donne par exemple :
http://www.antlr.org/grammar/1090713067533/index.html
Bonne Chance.
Merci djo.mos, effectivement je me suis rabattu sur ANTLR.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager