java - 自定义 SonarQube 规则来识别实例变量

标签 java sonarqube

我正在创建一个自定义 SonarQube 规则来警告包含特定字符串的实例变量名称。看来 Kind.VARIABLE 可以检测所有变量,包括局部变量。有没有办法只检测和处理实例变量?

最佳答案

为什么不检查父级的Kind?对于实例变量,它应该是一个CLASS

禁止实例变量中的 BLABLA 字符串的工作规则将如下所示。

@Rule(key = "Banned Keyword Rule")
public class BannedKeywordRule extends IssuableSubscriptionVisitor {
    // Define the word to ban
    private static final String BANNED_KEYWORD = "BLABLA";

    @Override
    public List<Tree.Kind> nodesToVisit() {
        //  visit only the variables
        return ImmutableList.of(Tree.Kind.VARIABLE);
    }

    @Override
    public void visitNode(Tree tree) {
        VariableTree variableTree = (VariableTree) tree;
        // check if parent is CLASS aka variable is instance
        if(variableTree.parent().is(Tree.Kind.CLASS) && variableTree.simpleName().name().contains(BANNED_KEYWORD)) {
            reportIssue(variableTree, "String " + BANNED_KEYWORD + " can not be used as a instance variable.");
        }
    }
}

关于java - 自定义 SonarQube 规则来识别实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52304211/

相关文章:

java - 构造函数 AdRequest() 不可见

shell - 如何分析Sonar中的sh文件?

java - 快速、Ajaxian 和可索引 Java Web 应用程序?

java - 无法删除 IOS 推送通知的右侧操作按钮 "LAUNCH"

java - 仅在 Chrome 浏览器中无法在 Iframe 标记下找到元素 (html)

java - 字段 component.x 不可见

docker - Sonarqube无法创建用户缓存

eclipse - SonarLint 无法连接到 SonarQube 服务器

java - SonarQube 插件未找到 JaCoCo 结果

c# - 如何为 SonarQube 创建自己的 C# 自定义规则?