为了账号安全,请及时绑定邮箱和手机立即绑定

如何仅对给定的类类型应用现有的 sonarQube 规则

如何仅对给定的类类型应用现有的 sonarQube 规则

慕后森 2022-12-15 16:31:26
请帮助我解决这些问题。简单地说,我只想对某些类型的类应用现有的 sonarqube 规则。据我所知,我们可以使用类树来获取类并识别目标类。我想知道的是如何在自定义规则中启用或禁用现有的声纳规则?.下一个问题是确定扩展的子类的基类。例如,A 类扩展 B 类,B 扩展 C 类,现在我想识别从 C 类(基类)扩展的所有类。即使是一个小指南、链接、小费也会非常感激。
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

我认为您不能在自定义插件中禁用默认 java 插件的现有规则。您可以在您的配置文件中禁用该规则,并将默认规则替换为自定义规则。(实际上可能有办法在您的插件中创建自定义问题过滤器)


规则是这样实现的。


@Rule(key = "S1948") 公共类 SerializableFieldInSerializableClassCheck 扩展 IssuableSubscriptionVisitor


 public List<Tree.Kind> nodesToVisit() {

    return ImmutableList.of(Tree.Kind.CLASS);

  }


  public void visitNode(Tree tree) {

    if(!hasSemantic()) {

      return;

    }

   ... rule logic

  }

只需将现有规则复制(并更改规则键等)到您的自定义插件中并添加对类超类型的检查


if(!classTree.symbol().type().isSubtypeOf("your.supertype.C")) || !hasSemantic()) {

  return;

}


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信