불법적 인 종속성과주기를 찾기 위해 JDepend 2.9.1을 기반으로 한 JUnit 테스트를 실시했습니다.JDepend misses Cycles
오늘 우리는 JDepend에 의존성이 없음을 발견했습니다. 다음의 코드 조각에서 B에 따라 고려하지 않는 것 :
public class A {
@SomeAnotation(value = B.class)
public String someMethod() {
...
}
}
우리의 시험은 다음과 같습니다
는private JDepend setupJDepend() {
JDepend jdepend = null;
try {
jdepend = new JDepend();
jdepend.addDirectory("target/classes");
jdepend.addDirectory("target/test-classes");
} catch (final IOException ioException) {
fail("An IOException occured: " + ioException.getMessage());
}
jdepend.analyzeInnerClasses(true);
return jdepend;
}
@Test
public final void testNoCyclesOnPackageLevel() {
final JDepend jdepend = setupJDepend();
final Collection<?> packages = analyzeDependencies();
assertTrue(packages.size() > 0);
assertFalse("The code contains dependency cycles on package level!",
jdepend.containsCycles());
if (ignorePackageCycle) {
return;
}
java.util.List<String> packagesWithCycle = new ArrayList<String>();
for (Object pObject : packages) {
JavaPackage javaPackage = (JavaPackage) pObject;
if (javaPackage.containsCycle()) {
packagesWithCycle.add(javaPackage.getName());
}
}
assertTrue(packagesWithCycle.toString(), packagesWithCycle.isEmpty());
}
JDepend4Eclipse 플러그인 종속성을보고 그 결과 사이클을보고합니다.
이것은 버그입니까? 해결 방법이 있습니까? 우리가 뭔가 잘못하고있는거야?
관련 참고 사항 : jdepend.containsCycles()는 항상 false를 반환합니다.
그러나 JDepend4Eclipse는 어떻게 종속성을 찾습니까? DependencyFinder가 더 완벽한 지 알고 있습니까? –
최신 마스터는 RUNTIME 보존 정책을 지원합니다. https://github.com/clarkware/jdepend/commit/e8271a2b053c6e1857ba54131d36e2316a108f89에서 추가되었습니다. –