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

How to apply an existing sonarQube rule for only given class type

请帮我解决这些问题。只是 我只想对特定类型的 classes 应用现有的 sonarqube 规则。据我所知,我们可以使用 class 树来获取 classes 并识别目标 class。我想知道的是 如何在自定义规则中启用或禁用现有声纳规则?.

下一个问题是识别子class的基础class被扩展。例如 class A extend class B,B extend class C 现在我想识别从 class C 扩展的所有 classes (基地class).

即使是一个小指南,link,小费也会非常感激。

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

  2. 规则是这样实现的

    @Rule(键="S1948") public class SerializableFieldInSerializableClassCheck 扩展 IssuableSubscriptionVisitor

     public List<Tree.Kind> nodesToVisit() {
        return ImmutableList.of(Tree.Kind.CLASS);
      }
    
      public void visitNode(Tree tree) {
        if(!hasSemantic()) {
          return;
        }
       ... rule logic
      }
    

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

的检查
if(!classTree.symbol().type().isSubtypeOf("your.supertype.C")) || !hasSemantic()) {
  return;
}