我想详细了解jqassistant的扫描过程。例如,它会扫描所有Jar-Files和所有类,或者只扫描我直接从类中引用的类。要回答这些问题,调试通常是一个不错的选择。通常你启动jqassistant作为maven插件。 Debug maven plugin并不容易。所以我认为最好检查命令行客户端。调试工作正常,但不幸的是我得到了完全不同的结果。这是我的参数scan --files ${project_loc:/sze}/target/classes,${project_loc:/sze}/target/test-classes --storeDirectory c:/trash/neo4j
。输出与maven-build中的输出相同,它扫描441然后扫描106个类。
任何人都可以给我一个提示,命令行调用有什么问题吗?或者从一开始就回答这个问题的最佳解决方案是什么。
答案 0 :(得分:1)
我认为最好的选择是调试maven-plugin,因为这样就解决了所有配置和类路径问题。这并不像我想象的那么复杂。以下步骤解决了我的问题:
git clone https://github.com/buschmais/jqa-maven-plugin.git
并签出稳定版本,例如git checkout -b 1.2.0
jqassistant-maven-plugin
导入您的eclipse工作区。-Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
作为VM-Arguments。Remote Java Application
创建调试配置,并选择为Project
jqassistant-maven-plugin
。将Connection Properties
设为localhost
和5005
ScannerImpl
中设置断点。更优秀的候选人是ClassFileScannerPlugin
和ClassVisitor
。现在您可以轻松调试代码。不幸的是,许多访问者模式使得很难理解它是如何工作的。
根据我的分析,我可以说,只分析了类和测试类中的文件。来自库的所有类仅通过引用进入数据库。我想org.objectweb.asm.ClassReader
并不是简单地忽略不在类路径中的引用。这就是命令行版本找不到这么多元素的原因。