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

相关内容

热门资讯

玩家必看!多乐辅助app,拼十... 玩家必看!多乐辅助app,拼十辅助器,详细插件(有挂讲解)拼十辅助器能透视中分为三种模型:拼十辅助器...
推荐十款!授权二厅辅助,决战十... 推荐十款!授权二厅辅助,决战十水三辅助,详细教程(有挂教程)1、让任何用户在无需决战十水三辅助安装教...
玩家攻略推荐!潮汕掌上娱破解,... 玩家攻略推荐!潮汕掌上娱破解,途游辅助软件网站,详细教程(果真有挂)1、操作简单,无需途游辅助软件网...
技术分享!江西中至科技,打两圈... 技术分享!江西中至科技,打两圈怀疑有外挂,详细软件(有挂讲解)1、金币登录送、破产送、升级送、活动送...
我来教大家!玫瑰大厅辅助,乐乐... 我来教大家!玫瑰大厅辅助,乐乐围棋入门脚本,详细工具(详细教程)1、操作简单,无需乐乐围棋入门脚本手...
玩家亲测!超级三加一视频,八闽... 玩家亲测!超级三加一视频,八闽掌上十八卦脚本,详细器(有挂存在)1、用户打开应用后不用登录就可以直接...
关于!哥哥打大a辅助,微信微乐... 关于!哥哥打大a辅助,微信微乐辅助透视,详细技巧(有挂头条)1、微信微乐辅助透视破解器简单,微信微乐...
分辨真假!福建兄弟13水软件安... 分辨真假!福建兄弟13水软件安装,wepoker修改工具,详细方法(有挂教学)福建兄弟13水软件安装...
热点推荐!长城互娱辅助,神兽h... 热点推荐!长城互娱辅助,神兽h5平台反杀,详细技巧(竟然有挂)1)神兽h5平台反杀辅助插件:进一步探...
科普!开心庄园脚本辅助器,天天... 科普!开心庄园脚本辅助器,天天手游辅助工具,详细方法(真实有挂)1、开心庄园脚本辅助器有没有辅助教程...