gpt4 book ai didi

java - JDepend 错过了 Cycles

转载 作者:行者123 更新时间:2023-11-30 04:59:45 24 4
gpt4 key购买 nike

我们有一个基于 JDepend 2.9.1 的 JUnit 测试,以查找非法依赖项和循环。

今天我们发现 JDepend 缺少依赖项。下面这段代码中似乎没有考虑A依赖于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。

最佳答案

这是一个缺失的功能!

对于 @Retention(SOURCE)声明了 @SomeAnotation,没有工具可以在编译后的类文件中找到 B

对于其他策略,注释包含在类文件中,但 JDepend 的 ClassFileParser 不支持任何类型的注释,这是迄今为止缺少的功能。

编辑: checkin 的源代码,支持java 5注释并在eclipse插件中使用。也许2.9.1不是基于此的。未找到 JDepend 的发行说明及其发行日期。该守则已于2010年5月19日进行过检查。 “最新”版本似乎是 2008 年发布的。

关于java - JDepend 错过了 Cycles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7241685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com