java - 如何仅对给定的类类型应用现有的 sonarQube 规则
问题描述
请帮我解决这些问题。只是我想仅对某些类型的类应用现有的声纳规则。据我所知,我们可以使用类树来获取类并识别目标类。我想知道的是如何在自定义规则中启用或禁用现有的声纳规则?.
下一个问题是确定作为子类扩展的基类。例如,A 类扩展 B 类,B 类扩展 C 类,现在我想识别从 C 类扩展的所有类(基类)。
即使是一个小的指南,链接,提示也会非常感激。
解决方案
我认为您无法从自定义插件中的默认 java 插件禁用现有规则。您可以在您的配置文件中禁用该规则,并将默认规则替换为自定义规则。(实际上可能有办法在您的插件中创建自定义问题过滤器)
规则是这样实现的。
@Rule(key = "S1948") 公共类 SerializableFieldInSerializableClassCheck 扩展 IssuableSubscriptionVisitor
public List<Tree.Kind> nodesToVisit() { return ImmutableList.of(Tree.Kind.CLASS); } public void visitNode(Tree tree) { if(!hasSemantic()) { return; } ... rule logic }
只需将现有规则复制(并更改规则键等)到您的自定义插件中并添加对类超类型的检查
if(!classTree.symbol().type().isSubtypeOf("your.supertype.C")) || !hasSemantic()) {
return;
}
推荐阅读
- r - 安装 R 3.5 软件包时 rcpp 编译错误(ubuntu 16.04)
- python - AWS 提取卷 AttachmentID Boto3
- python - pexpect sendline 太慢了
- python - Python:在曲线和轴之间填充颜色并区域化区域
- python - 在python中清除基于文本的rpg屏幕
- spring-boot - 如何在 Spring Boot 中使用 Spring Security 启用 CORS
- pandas - 查看客户是否在每个季度都有购买,然后绘制图表
- sql-server - EF Core“无法在具有唯一索引 [index] 的对象 'dbo.[table name]' 中插入重复的键行
- python - 如果文件不存在则创建一个文件,否则什么也不做
- java - 静态方法中的有界类型参数