我想详细了解jqassistant的扫描过程。例如,它会扫描所有Jar-Files和所有类,还是只扫描我直接从类中引用的类。要回答这样的问题,调试通常是一个很好的选择。通常你会以maven插件的形式启动jqassistant。Debug maven plugin并非易事。所以我想最好检查一下命令行客户端。调试工作正常,但不幸的是我得到了一个完全不同的结果。下面是我的参数scan --files ${project_loc:/sze}/target/classes,${project_loc:/sze}/target/test-classes --storeDirectory c:/trash/neo4j。输出与maven-build中相同,它先扫描441个类,然后再扫描106个类。
有人能给我个提示吗,命令行调用出了什么问题?或者从一开始就回答这个问题的最佳解决方案是什么?
发布于 2017-02-28 23:38:14
我认为最好的选择是调试maven-plugin,因为这样所有的配置和类路径问题都可以解决。这并不像我想的那么复杂。下面的步骤解决了我的问题:
jqassistant-maven-plugin添加到您的eclipse中,然后添加-Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005作为Remote Java Application的调试配置,并选择as Project jqassistant-maven-plugin。在methode 5005Connection Properties设置为localhost,并在ScannerImpl中扫描一个断点。更好的候选者是先启动debug-configuration.,然后再启动ClassFileScannerPlugin和maven运行配置
现在,您可以轻松地调试代码。不幸的是,许多访问者模式很难理解它是如何工作的。
根据我的分析,我可以说,只有类中的文件和测试类才会被分析。库中的所有类只能通过引用进入数据库。我猜org.objectweb.asm.ClassReader不会简单地忽略不在类路径中的引用。这就是为什么命令行版本找不到这么多元素的原因。
https://stackoverflow.com/questions/42509378
复制相似问题