I am looking for a tool (or chain of tools) that can parse a .class files to a Java object. Something like :
JavaClass parsed = myTool.parse("/some_folder/SomeClassFile.class");
The parsed object would have methods like :
List<JavaMethod> methods = parsed.getMethods();
List<JavaInterface> interfaces = parsed.getImplementedInterfaces();
My constraints are :
- The aim is to parse all classes of a project, including jars, so performance does matter.
- The parser has to parse Java 8 .class files
- Java is my main language so it's better for me if it's in Java.
Of course I can do some coding, so for example if the output is xml it's ok.
So here are the options I have found so far - none being satisfying as it is :
- BCEL or ASM look like a weapon of choice, but they also look like they're not maintained anymore. Besides, they're a little overkill for my purpose.
- Elipse AST would work, but from what I saw it's only for source files, and I need to parse binary files (jars...)
- A grammar for a parsing engine like antlr, yacc, bison... would work, but I have yet to find a reference grammar for .class files ! Besides, antlr is for text files, and I don't know of another reference Java parser engine (as I said, I would like a Java tool better).
- Any class loader would actually do the job : I could just load the class and then use reflection. But that's not really what class loaders are for...
So here is where I am now ! Thanks in advance for your help !
Aucun commentaire:
Enregistrer un commentaire