-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathExternal_package_usage_per_artifact.cypher
28 lines (27 loc) · 1.18 KB
/
External_package_usage_per_artifact.cypher
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// External package usage per artifact. Requires "Add_file_name and_extension.cypher".
MATCH (artifact:Artifact:Archive)-[:CONTAINS]->(type:Type)
WITH artifact.name AS artifactName
,count(type) AS numberOfTypesInArtifact
,collect(type) AS typeList
UNWIND typeList AS type
MATCH (type)-[externalDependency:DEPENDS_ON]->(externalType:ExternalType)
WITH numberOfTypesInArtifact
,externalDependency
,artifactName
,type.fqn AS fullTypeName
,type.name AS typeName
,replace(externalType.fqn, '.' + externalType.name, '') AS externalPackageName
,externalType.name AS externalTypeName
WITH numberOfTypesInArtifact
,artifactName
,externalPackageName
,count(externalDependency) AS numberOfExternalTypeCaller
,sum(externalDependency.weight) AS numberOfExternalTypeCalls
,collect(DISTINCT externalTypeName) AS externalTypeNames
RETURN artifactName
,externalPackageName
,numberOfExternalTypeCaller
,numberOfExternalTypeCalls
,numberOfTypesInArtifact
,externalTypeNames
ORDER BY artifactName ASC, numberOfExternalTypeCaller DESC, externalPackageName ASC