Reputation: 7309
I want to understand the scanning process of jqassistant in detail. For example will it scan all Jar-Files and all classes or only the one I directly reference from my classes. To answer such questions debugging is often a good option. How ever normally you start jqassistant as maven plugin. Debug maven plugin is not so easy. So I thought it's better to checkout the commandline-client. Debugging works fine, but unfortunately I get a complete different result. Here are my parameter scan --files ${project_loc:/sze}/target/classes,${project_loc:/sze}/target/test-classes --storeDirectory c:/trash/neo4j
. The output is the same as in the maven-build it scans 441 and then 106 classes.
Can anyone give me a hint, what's wrong with the commandline-call? Or what whould be the best solution to answer the question from the beginning.
Upvotes: 1
Views: 150
Reputation: 7309
I think the best option is to debug the maven-plugin, because then all configuration and classpath-problems are solved. This isn't as complicated as I thought. The following step solve my problems:
git clone https://github.com/buschmais/jqa-maven-plugin.git
and checkout a stable version, for example git checkout -b 1.2.0
jqassistant-maven-plugin
into your eclipse workspace.-Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
as VM-Arguments.Remote Java Application
and choose as Project
jqassistant-maven-plugin
. Set Connection Properties
to localhost
and 5005
ScannerImpl
in methode scan. Further good candidates are the ClassFileScannerPlugin
and ClassVisitor
.Now you can easily debug the code. Unfortunately many visitor patterns makes it difficult to understand how it works.
Based on my analysis I can say, that only file in classes and test-classes are analyzed. All classes from library only come into the database via reference. I guess that the org.objectweb.asm.ClassReader
doesn't simply ignores references which are not in the classpath. This is the reason why the command line version doesn't find so much elements.
Upvotes: 1