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.");
}
}
}
推荐阅读
- angular - ngx-datatable date sorting by Year ANGULAR 8
- c++ - G++ 编译器无法识别 SQLAPI.h 头文件
- python - 如何根据 Django CMS 中的区域动态更改标题中的链接标签
- deployment - Jboss 7.2 中的部署顺序
- c# - 使用 C# & SQL WHERE 子句删除 SQL 表记录
- java - 在 HashSet 迭代上动态创建 javafx 按钮。如何为每个按钮创建单独的 actionEvent?
- python - 在 pandas 中过滤混合 dtype 列会导致错误
- python - Custom Transformers work individually but breaks down when combining them into one Pipeline
- python - 你能抹去乌龟用python写的文字吗
- google-cloud-platform - 如何查看我的 Node.js Cloud Function 环境的文件系统性质?