如何在eclipse中调试jQassistant

如何在eclipse中调试jQassistant,eclipse,maven,jqassistant,Eclipse,Maven,Jqassistant,我想详细了解jqassistant的扫描过程。例如,它将扫描所有Jar文件和所有类,或者只扫描我从类中直接引用的一个。要回答这样的问题,调试通常是一个不错的选择。通常情况下,您如何将jqassistant作为maven插件启动。这并不容易。所以我认为最好签出命令行客户端。调试工作正常,但不幸的是,我得到了完全不同的结果。下面是我的参数scan--files${project\u loc:/sze}/target/classes,${project\u loc:/sze}/target/test

我想详细了解jqassistant的扫描过程。例如,它将扫描所有Jar文件和所有类,或者只扫描我从类中直接引用的一个。要回答这样的问题,调试通常是一个不错的选择。通常情况下,您如何将jqassistant作为maven插件启动。这并不容易。所以我认为最好签出命令行客户端。调试工作正常,但不幸的是,我得到了完全不同的结果。下面是我的参数
scan--files${project\u loc:/sze}/target/classes,${project\u loc:/sze}/target/test classes--storeDirectory c:/trash/neo4j
。输出与maven构建中的相同,它扫描441个类,然后扫描106个类


谁能给我一个提示,命令行呼叫有什么问题吗?或者从一开始回答这个问题的最佳解决方案是什么。

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

  • 克隆项目
    git克隆https://github.com/buschmais/jqa-maven-plugin.git
    并签出一个稳定的版本,例如
    git checkout-b1.2.0
  • 将jqassistant maven插件导入eclipse工作区
  • 准备maven运行配置并添加
    -Xdebug-Xnoagent-Djava.compile=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
    作为VM参数
  • 远程Java应用程序创建调试配置
    ,并选择as
    Project
    jqassistant maven plugin
    。将
    连接属性设置为
    localhost
    5005
  • 在methode scan中的
    ScannerImpl
    中设置断点。进一步的好的候选者是
    ClassFileScannerPlugin
    ClassVisitor
  • 启动maven运行配置,然后启动调试配置
  • 现在您可以轻松地调试代码。不幸的是,许多访问者模式使我们很难理解它是如何工作的


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

    Maven插件决定要扫描哪些元素。默认情况下,这些是主构件和测试构件的类文件夹。在这些文件夹中找到的每个.class文件都会触发ClassFileScannerPlugin。此外,scanIncludes选项允许添加更多的文件(例如,额外的src/main/folders)。默认情况下,可以扫描Maven模块的整个文件内容,但这将是一个功能请求。