Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,16 @@

MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module)
MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module)
// Get the project of the module if available
OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module)
OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule)
WHERE module.globalFqn <> dependentModule.globalFqn
WITH project.absoluteFileName AS projectFileName
,replace(
module.globalFqn
,project.absoluteFileName + '/', ''
) AS moduleName
,dependentProject.absoluteFileName AS dependentProjectFileName
,replace(
dependentModule.globalFqn
,dependentProject.absoluteFileName + '/', ''
) AS dependentModulePathName
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
// Get the project of the module if available
OPTIONAL MATCH (project:TS:Project)-[:CONTAINS]->(module)
OPTIONAL MATCH (dependentProject:TS:Project)-[:CONTAINS]->(dependentModule)
WITH project.name AS projectFileName
,module.localFqn AS moduleName
,dependentProject.name AS dependentProjectFileName
,dependentModule.localFqn AS dependentModulePathName
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
WITH projectFileName
,moduleName
,dependentProjectFileName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,16 @@

MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module)
MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module)
// Get the project of the module if available
OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module)
OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule)
WHERE module.globalFqn <> dependentModule.globalFqn
WITH project.absoluteFileName AS projectFileName
,replace(
module.globalFqn
,project.absoluteFileName + '/', ''
) AS moduleName
,dependentProject.absoluteFileName AS dependentProjectFileName
,replace(
dependentModule.globalFqn
,dependentProject.absoluteFileName + '/', ''
) AS dependentModulePathName
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
// Get the project of the module if available
OPTIONAL MATCH (project:TS:Project)-[:CONTAINS]->(module)
OPTIONAL MATCH (dependentProject:TS:Project)-[:CONTAINS]->(dependentModule)
WITH project.name AS projectFileName
,module.localFqn AS moduleName
,dependentProject.name AS dependentProjectFileName
,dependentModule.localFqn AS dependentModulePathName
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
WITH projectFileName
,moduleName
,dependentProjectFileName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,16 @@

MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module)
MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module)
// Get the project of the module if available
OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module)
OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule)
WHERE module.globalFqn <> dependentModule.globalFqn
WITH project.absoluteFileName AS projectFileName
,replace(
module.globalFqn
,project.absoluteFileName + '/', ''
) AS moduleName
,dependentProject.absoluteFileName AS dependentProjectFileName
,replace(
dependentModule.globalFqn
,dependentProject.absoluteFileName + '/', ''
) AS dependentModulePathName
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
// Get the project of the module if available
OPTIONAL MATCH (project:TS:Project)-[:CONTAINS]->(module)
OPTIONAL MATCH (dependentProject:TS:Project)-[:CONTAINS]->(dependentModule)
WITH project.name AS projectFileName
,module.localFqn AS moduleName
,dependentProject.name AS dependentProjectFileName
,dependentModule.localFqn AS dependentModulePathName
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
WITH projectFileName
,moduleName
,dependentProjectFileName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ MATCH (module:TS:Module)<-[:CONTAINS]-(package:TS:Project)
WHERE module.globalFqn IS NOT NULL
AND EXISTS { (module)-[:EXPORTS]->(:TS) } // only when module exports something
MATCH (externalModule:TS:ExternalModule)
WHERE module.globalFqn IS NOT NULL
WHERE externalModule.globalFqn IS NOT NULL
AND externalModule <> module
AND externalModule.name = module.name // Base requirement: Same module name
AND EXISTS { (externalModule)-[:EXPORTS]->(:TS:ExternalDeclaration)<-[]-(used:TS) } // only when external declarations are used
Expand All @@ -21,13 +21,12 @@ WHERE module.globalFqn IS NOT NULL
// Find internal and external modules with identical "globalFqn"
,(module.globalFqn = externalModule.globalFqn) AS equalGlobalFqn
// Find internal and external modules with identical "module"
,(module.module = externalModule.module) AS equalModule
,(module.module = externalModule.module) AS equalModule
// Find matching internal and external modules within the same package and namespace
,( externalModule.namespace > ''
,( externalModule.namespace <> ''
AND externalModule.namespace = module.namespace
AND externalModule.packageName = package.name
AND normalizedExternalExtension = module.extensionExtended
AND externalModule.globalFqn ENDS WITH module.localModulePath
) AS equalNameAndNamespace
// Find matching internal and external module without a namespace with matching local module path
,( module.namespace = ''
Expand Down
Loading