-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathjdepend.gradle
42 lines (39 loc) · 1.05 KB
/
jdepend.gradle
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
buildscript {
repositories {
maven { url mavenRepo }
}
dependencies {
classpath 'guru.nidi:jdepend:2.9.5'
}
}
import jdepend.framework.JDepend
task jdepend {
enabled = !sourceSets.main.allJava.empty
inputs.files sourceSets.main.output
doLast {
JDepend jdepend = new JDepend()
sourceSets.main.output.classesDirs.each { dir ->
jdepend.addDirectory(dir.path)
}
def packages = jdepend.analyze()
if (jdepend.containsCycles()) {
def allCyclicPackages = []
packages.each { p ->
if (!allCyclicPackages.contains(p) && p.containsCycle()) {
def cycles = []
p.collectAllCycles(cycles)
if (cycles[-1] == p) {
logger.quiet 'Package cycle detected:'
cycles.each {
logger.quiet "- $it.name"
allCyclicPackages.add it
}
}
}
}
logger.quiet 'Found cyclic dependencies between packages'
throw new GradleException('Found cyclic dependencies between packages')
}
}
}
check.dependsOn jdepend