用于识别实例变量的自定义 SonarQube 规则

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


HUWWW
浏览 145回答 1
1回答

GCT1015

为什么不检查Kind父母的?对于实例变量,它应该是一个CLASS.BLABLA在实例变量中禁止字符串的工作规则看起来像这样。@Rule(key = "Banned Keyword Rule")public class BannedKeywordRule extends IssuableSubscriptionVisitor {&nbsp; &nbsp; // Define the word to ban&nbsp; &nbsp; private static final String BANNED_KEYWORD = "BLABLA";&nbsp; &nbsp; @Override&nbsp; &nbsp; public List<Tree.Kind> nodesToVisit() {&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; visit only the variables&nbsp; &nbsp; &nbsp; &nbsp; return ImmutableList.of(Tree.Kind.VARIABLE);&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public void visitNode(Tree tree) {&nbsp; &nbsp; &nbsp; &nbsp; VariableTree variableTree = (VariableTree) tree;&nbsp; &nbsp; &nbsp; &nbsp; // check if parent is CLASS aka variable is instance&nbsp; &nbsp; &nbsp; &nbsp; if(variableTree.parent().is(Tree.Kind.CLASS) && variableTree.simpleName().name().contains(BANNED_KEYWORD)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reportIssue(variableTree, "String " + BANNED_KEYWORD + " can not be used as a instance variable.");&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java