首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDepend错失周期

JDepend错失周期
EN

Stack Overflow用户
提问于 2011-08-30 18:15:09
回答 1查看 554关注 0票数 1

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

今天我们发现JDepend缺少依赖项。在下面这段代码中,它似乎没有考虑依赖于B的A:

代码语言:javascript
复制
public class A {
    @SomeAnotation(value = B.class)
    public String someMethod() {
        ...
    }
}

我们的测试如下所示:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-30 22:08:52

这是一个缺失的特性!

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

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

编辑:签入的源代码支持java5注解,并在eclipse插件中使用。也许2.9.1版本不是基于这个。未找到JDepend的发行说明及其发行日期。本规范已在2010-05-19进行了检查。“最新”版本似乎是2008年的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7241685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档