如何在eclipse中调试jQassistant

时间:2017-02-28 12:58:11

标签: eclipse maven jqassistant

我想详细了解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个类。

任何人都可以给我一个提示,命令行调用有什么问题吗?或者从一开始就回答这个问题的最佳解决方案是什么。

1 个答案:

答案 0 :(得分:1)

我认为最好的选择是调试maven-plugin,因为这样就解决了所有配置和类路径问题。这并不像我想象的那么复杂。以下步骤解决了我的问题:

  1. 克隆项目git clone https://github.com/buschmais/jqa-maven-plugin.git并签出稳定版本,例如git checkout -b 1.2.0
  2. jqassistant-maven-plugin导入您的eclipse工作区。
  3. 准备maven-run-configuration并添加-Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005作为VM-Arguments。
  4. Remote Java Application创建调试配置,并选择为Project jqassistant-maven-plugin。将Connection Properties设为localhost5005
  5. 在方法扫描中的ScannerImpl中设置断点。更优秀的候选人是ClassFileScannerPluginClassVisitor
  6. 启动maven run配置,然后启动debug-configuration。
  7. 现在您可以轻松调试代码。不幸的是,许多访问者模式使得很难理解它是如何工作的。

    根据我的分析,我可以说,只分析了类和测试类中的文件。来自库的所有类仅通过引用进入数据库。我想org.objectweb.asm.ClassReader并不是简单地忽略不在类路径中的引用。这就是命令行版本找不到这么多元素的原因。