META-INF.jqassistant-rules.java-classpath.xml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java Show documentation
Show all versions of java Show documentation
Plugin for jQAssistant to be able to scan and to
analyze Java related artifacts.
The newest version!
<jqassistant-rules xmlns="http://schema.jqassistant.org/rule/v1.10"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schema.jqassistant.org/rule/v1.10 http://schema.jqassistant.org/rule/jqassistant-rule-v1.10.xsd">
<concept id="java-classpath:ResolveType">
<description>Adds a relation "RESOLVES_TO" from a type required by an artifact to a type contained in another
artifact if their fully qualified names match.
</description>
<cypher><![CDATA[
MATCH
(a1:Artifact)-[:REQUIRES]->(t1:Java:Type)
WITH
a1, t1, t1.fqn AS fqn
MATCH
(a2:Artifact)-[:CONTAINS]->(t2:Java:Type)
WHERE
t2.fqn = t1.fqn
CALL {
WITH
t1, t2
MERGE
(t1)-[:RESOLVES_TO]->(t2)
} IN TRANSACTIONS
RETURN
count(*) AS ResolvedTypes
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveMember">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Adds a relation "RESOLVES_TO" from a member (i.e. field or method) of a type to a member of another
type if there is a relation "RESOLVES_TO" between the two types and the members have the same signature.
</description>
<cypher><![CDATA[
MATCH
(t1:Java:Type)-[:RESOLVES_TO]->(t2:Java:Type),
(t1)-[:DECLARES]->(m1),
(t2)-[:DECLARES]->(m2)
WHERE
(m1:Field or m1:Method)
and m1.signature = m2.signature
CALL {
WITH
m1, m2
MERGE
(m1)-[:RESOLVES_TO]->(m2)
} IN TRANSACTIONS
RETURN
count(*) as ResolvedMembers
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveDependsOn">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "DEPENDS_ON" relations between types to their resolved types with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(t:Java:Type)-[dependsOn:DEPENDS_ON]->(t1:Java:Type)-[:RESOLVES_TO]->(t2:Java:Type)
CALL {
WITH
t, dependsOn, t2
MERGE
(t)-[dependsOn1:DEPENDS_ON]->(t2)
SET
dependsOn1=dependsOn,
dependsOn1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedDependencies
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveExtends">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "EXTENDS" relations between types to their resolved types with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(t:Java:Type)-[extends:EXTENDS]->(t1:Java:Type)-[:RESOLVES_TO]->(t2:Java:Type)
CALL {
WITH
t, extends, t2
MERGE
(t)-[extends1:EXTENDS]->(t2)
SET
extends1=extends,
extends1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedSuperClass
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveImplements">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "IMPLEMENTS" relations between types to their resolved types with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(t:Java:Type)-[implements:IMPLEMENTS]->(t1:Java:Type)-[:RESOLVES_TO]->(t2:Java:Type)
CALL {
WITH
t, implements, t2
MERGE
(t)-[implements1:IMPLEMENTS]->(t2)
SET
implements1=implements,
implements1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedInterfaces
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveFieldType">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "OF_TYPE" relations between fields and types to their resolved types with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(f:Field)-[ofType:OF_TYPE]->(:Java:Type)-[:RESOLVES_TO]->(t:Java:Type)
CALL {
WITH
f, ofType, t
MERGE
(f)-[ofType1:OF_TYPE]->(t)
SET
ofType1=ofType,
ofType1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedFieldTypes
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveThrows">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "THROWS" relations between methods and types to their resolved types with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(m:Method)-[throws:THROWS]->(:Java:Type)-[:RESOLVES_TO]->(t:Java:Type)
CALL {
WITH
m, throws, t
MERGE
(m)-[throws1:THROWS]->(t)
SET
throws1=throws,
throws1.resolved=true
}
RETURN
count(*) as ResolvedExceptionTypes
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveReturns">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "RETURNS" relations between methods and types to their resolved types with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(m:Method)-[returns:RETURNS]->(:Java:Type)-[:RESOLVES_TO]->(t:Java:Type)
CALL {
WITH
m, returns, t
MERGE
(m)-[returns1:RETURNS]->(t)
SET
returns1=returns,
returns1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedReturnTypes
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveParameterType">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "OF_TYPE" relations between method parameters and types to their resolved types with a
property "resolved:true".
</description>
<cypher><![CDATA[
MATCH
(m:Parameter)-[ofType:OF_TYPE]->(:Java:Type)-[:RESOLVES_TO]->(t:Java:Type)
CALL {
WITH
m, ofType, t
MERGE
(m)-[ofType1:OF_TYPE]->(t)
SET
ofType1=ofType,
ofType1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedParameterTypes
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveAnnotationType">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "OF_TYPE" relations between annotation and types to their resolved types with a
property "resolved:true".
</description>
<cypher><![CDATA[
MATCH
(a:Annotation)-[ofType:OF_TYPE]->(:Java:Type)-[:RESOLVES_TO]->(t:Java:Type)
CALL {
WITH
a, ofType, t
MERGE
(a)-[ofType1:OF_TYPE]->(t)
SET
ofType1=ofType,
ofType1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedAnnotationTypes
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveOfRawType">
<requiresConcept refId="java-classpath:ResolveType"/>
<description>Propagates "OF_RAW_TYPE" relations between generic bounds and types to their resolved types with a
property "resolved:true".
</description>
<cypher><![CDATA[
MATCH
(b:Bound)-[ofRawType:OF_RAW_TYPE]->(:Java:Type)-[:RESOLVES_TO]->(t:Java:Type)
CALL {
WITH
b, ofRawType, t
MERGE
(b)-[ofRawType1:OF_RAW_TYPE]->(t)
SET
ofRawType1=ofRawType,
ofRawType1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedRawTypes
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveValue">
<requiresConcept refId="java-classpath:ResolveType"/>
<requiresConcept refId="java-classpath:ResolveMember"/>
<description>Propagates "IS" relations between values and types to their resolved types with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(v:Value)-[is:IS]->(e)-[:RESOLVES_TO]->(e2)
CALL {
WITH
v, is, e2
MERGE
(v)-[is1:IS]->(e2)
SET
is1=is,
is1.resolved=true
} IN TRANSACTIONS
RETURN
count(*) as ResolvedValueTypes
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveReads">
<requiresConcept refId="java-classpath:ResolveMember"/>
<description>Propagates "READS" relations between methods and fields to their resolved fields with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(m:Method)-[reads:READS]->(f1:Field)-[:RESOLVES_TO]->(f2:Field)
CALL {
WITH
m, reads, f2
MERGE
(m)-[reads1:READS {relationId: id(reads)}]->(f2)
SET
reads1=reads,
reads1.resolved=true
REMOVE
reads1.relationId
} IN TRANSACTIONS
RETURN
count(*) as ResolvedReads
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveWrites">
<requiresConcept refId="java-classpath:ResolveMember"/>
<description>Propagates "WRITES" relations between methods and fields to their resolved fields with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(m:Method)-[writes:WRITES]->(f1:Field)-[:RESOLVES_TO]->(f2:Field)
CALL {
WITH
m, writes, f2
MERGE
(m)-[writes1:WRITES {relationId: id(writes)}]->(f2)
SET
writes1=writes,
writes1.resolved=true
REMOVE
writes1.relationId
} IN TRANSACTIONS
RETURN
count(*) as ResolvedWrites
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:ResolveInvokes">
<requiresConcept refId="java-classpath:ResolveMember"/>
<description>Propagates "INVOKES" relations between methods to their resolved methods with a property
"resolved:true".
</description>
<cypher><![CDATA[
MATCH
(m:Method)-[invokes:INVOKES]->(m1:Method)-[:RESOLVES_TO]->(m2:Method)
CALL {
WITH
m, invokes, m2
MERGE
(m)-[invokes1:INVOKES {relationId : id(invokes)}]->(m2)
SET
invokes1=invokes,
invokes1.resolved=true
REMOVE
invokes1.relationId
}
RETURN
count(*) as ResolvedInvocations
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
<concept id="java-classpath:Resolve">
<requiresConcept refId="java-classpath:ResolveDependsOn"/>
<requiresConcept refId="java-classpath:ResolveExtends"/>
<requiresConcept refId="java-classpath:ResolveImplements"/>
<requiresConcept refId="java-classpath:ResolveFieldType"/>
<requiresConcept refId="java-classpath:ResolveThrows"/>
<requiresConcept refId="java-classpath:ResolveReturns"/>
<requiresConcept refId="java-classpath:ResolveParameterType"/>
<requiresConcept refId="java-classpath:ResolveAnnotationType"/>
<requiresConcept refId="java-classpath:ResolveOfRawType"/>
<requiresConcept refId="java-classpath:ResolveValue"/>
<requiresConcept refId="java-classpath:ResolveReads"/>
<requiresConcept refId="java-classpath:ResolveWrites"/>
<requiresConcept refId="java-classpath:ResolveInvokes"/>
<description>Includes all concepts for resolving a Java classpath and returns the number of resolved elements.
</description>
<cypher><![CDATA[
MATCH
()-[r:RESOLVES_TO]->()
RETURN
count(r) as ResolvedElements
]]></cypher>
<verify>
<aggregation/>
</verify>
</concept>
</jqassistant-rules>
© 2015 - 2025 Weber Informatics LLC | Privacy Policy