Neo4j 查找接口方法的实现

Neo4j 查找接口方法的实现,neo4j,jqassistant,Neo4j,Jqassistant,我想用jqassistant从一个给定的方法开始,可视化代码库的方法链(哪个方法调用哪个方法) 对于普通方法调用,下面的Cypher查询有效工作通知是我开始使用的方法: MATCH (begin:Method {name: "workupNotification"}) -[INVOKES*1..20]-> (method:Method) WHERE not method:Constructor and exists(method.name) RETURN begin, method, ty

我想用jqassistant从一个给定的方法开始,可视化代码库的方法链(哪个方法调用哪个方法)

对于普通方法调用,下面的Cypher查询有效<代码>工作通知是我开始使用的方法:

MATCH (begin:Method {name: "workupNotification"}) -[INVOKES*1..20]-> (method:Method) WHERE not method:Constructor and exists(method.name) RETURN begin, method, type
但是,我们软件中的许多方法调用都是对接口的调用,这些接口的实现在方法中是未知的(具有依赖倒置的SOA)

serviceRegistry.getService(MyServiceInterface.class).serviceMethod();

如何选择此方法的实现(有两个类实现每个接口。一个是自动生成的(代理),另一个是我感兴趣的类。)

您需要执行JVM在运行时为您执行的操作:解析虚拟方法调用。有一个预定义的jQAssistant概念,它将调用关系传播到实现子类:
java:invokeSoverridedMethod
。您可以从自己的规则中引用它作为必需的概念,也可以从命令行应用它,例如使用Maven:

mvn jqassistant:analyze -Djqassistant.concepts=java:InvokesOverriddenMethod
该规则记录在手册中,请参阅


(这个概念的名称并不直观,最好用类似
java:VirtualInvokes
的东西来代替它。)

您需要执行JVM在运行时为您执行的操作:解析虚拟方法调用。有一个预定义的jQAssistant概念,它将调用关系传播到实现子类:
java:invokeSoverridedMethod
。您可以从自己的规则中引用它作为必需的概念,也可以从命令行应用它,例如使用Maven:

mvn jqassistant:analyze -Djqassistant.concepts=java:InvokesOverriddenMethod
该规则记录在手册中,请参阅


(这个概念的名称并不直观,最好用类似于
java:VirtualInvokes
的东西来代替它)。

它已被弃用。在1.9.0版本中,应使用以下命令行:

mvn jqassistant:analyze -Djqassistant.concepts=java:VirtualInvokes

它已被弃用。在1.9.0版本中,应使用以下命令行:

mvn jqassistant:analyze -Djqassistant.concepts=java:VirtualInvokes