SonarQube自定义规则无效

问题遇到的现象和发生背景

需求是 自定义SonarQube规则 “redis禁止使用keys命令” 以下代码是参照其他规则写的 但是总是会扫描不到相关问题
找到的 RedisTemplate 的 TypeBinding为 missing:RedisTemplate

问题相关代码,请勿粘贴截图

规则代码

package org.sonar.samples.java.checks;

import org.sonar.check.Rule;
import org.sonar.java.model.ExpressionUtils;
import org.sonar.plugins.java.api.IssuableSubscriptionVisitor;
import org.sonar.plugins.java.api.semantic.MethodMatchers;
import org.sonar.plugins.java.api.tree.*;

import java.util.Collections;
import java.util.List;

@Rule(key = "AvoidRedisKeysRule")
public class AvoidRedisKeysRule extends IssuableSubscriptionVisitor {

  private static final MethodMatchers METHOD_MATCHERS = MethodMatchers.create()
    .ofTypes("org.springframework.data.redis.core.RedisTemplate")
    .names("keys")
    .withAnyParameters()
    .build();

  @Override
  public List nodesToVisit() {
    return Collections.singletonList(Tree.Kind.METHOD_INVOCATION);
  }

  @Override
  public void visitNode(Tree tree) {
    MethodInvocationTree mit = (MethodInvocationTree) tree;
    if(METHOD_MATCHERS.matches(mit)){
      IdentifierTree id = ExpressionUtils.methodName(mit);
      reportIssue(id,"do not use keys() or scan()");
    }

  }
}

被测代码

 import org.springframework.data.redis.core.RedisTemplate;

class AvoidRedisKeysRule {

  void foo(RedisTemplate redisTemplate) {
    redisTemplate.keys("*");// Noncompliant
    this.keys(); // Compliant
  }

  void keys(){

  }

}
运行结果及报错内容

img

我的解答思路和尝试过的方法

尝试导入 redis 相关依赖 还是不行
尝试 编写 禁止使用 string 的 substring 命令 找到的 String的typebinding也是missing:type

我想要达到的结果

// Noncompliant 注释的一行 应该被检测到
// Compliant 注释的一行不应该被检测到

这篇文章:sonarQube的自定义规则开发【详细教程】 也许有你想要的答案,你可以看看