自定义 SonarQube 规则来标识实例变量



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

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

bann 是实例变量中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.");
}
}
}

最新更新