ArchUnitdoesn'tdetectgenericforbiddendependencies
创始人
2024-09-12 07:30:42
0

使用自定义规则来检测泛型依赖关系。

在ArchUnit中,目前确实无法直接检测泛型依赖关系。但是,我们可以使用自定义规则来实现这个目标。

具体解决方法是,定义一个自定义的Java类类型谓词(Predicate),用于过滤我们想要检测的类。该类型谓词将选择那些或者依靠了定义了泛型类型参数的类型的类。然后,通过Arch Rule API建立我们的规则:将第一个谓词应用到所有的目标类上,将第二个谓词应用到源头类上,并确保没有依赖违反了我们的规则。

代码示例如下:

JavaClasses classes =
    new ClassFileImporter().importClassesIn(Package.of("com.example"));

ArchRule rule = classes().that(typeParamIsUsedOrDeclared())
    .should().onlyDependOn(classes().that(typeParamIsUsedOrDeclared()));

private DescribedPredicate typeParamIsUsedOrDeclared() {
  return new DescribedPredicate("use or declare type variable") {
    @Override
    public boolean apply(JavaClass input) {
      return input.getGenericSuperclass() != null ||
        input.getInterfaces().stream().anyMatch(i -> i.getErasure().equals(input));
    }
  };
}

其中,typeParamIsUsedOrDeclared()方法返回了自定义类型谓词,该谓词选择那些定义了泛型类型参数的类型。在规则定义中,我们将这个谓词应用到了源头和目标类上,确保它们都没有被使用或依赖了其他类的泛型类型参数。

相关内容

热门资讯

开挂辅助软件"德州圈... 大家好,今天小编来为大家解答德州圈脚本这个问题咨询软件客服可以免费测试直接加微信(136704302...
开挂辅助平台"wep... 【亲,wepoker破解游戏盒子 这款游戏可以开挂的,确实是有挂的,很多玩家在这款wepoker破解...
开挂辅助插件"We ... 开挂辅助插件"We poker辅助器下载"开挂(透视)辅助脚本(存在有挂)>>您好:软件加薇1367...
开挂辅助下载"wep... wepoker私人局可以透视是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用...
开挂辅助软件"wep... 开挂辅助软件"wepoker代打辅助机器人"开挂(透视)辅助脚本(有挂教程)【无需打开直接搜索加薇1...
开挂辅助工具"wep... 开挂辅助工具"wepoker轻量版有透视吗"开挂(透视)辅助神器(真的有挂) 了解更多开挂安装加(1...
开挂辅助插件"we ... 开挂辅助插件"we poker免费辅助器"开挂(透视)辅助神器(今日头条)您好:we poker免费...
开挂辅助工具"hhp... 开挂辅助工具"hhpkoer辅助器视频"开挂(透视)辅助平台(有挂实锤) 【无需打开直接搜索加薇13...
开挂辅助工具"hhp... 开挂辅助工具"hhpoker德州辅助"开挂(透视)辅助平台(有挂猫腻)>>您好:软件加1367043...
开挂辅助工具"wer... 开挂辅助工具"werplan有挂吗"开挂(透视)辅助安装(有挂教学) 【无需打开直接搜索加薇1367...