Sonarqube - 如何在代码中检查 Logger 或 LoggerFactory

问题描述 投票:0回答:2

我想使用 Java 在 Sonarqube 中构建一个自定义规则,可以捕获这种情况的发生:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

或代码中的单词

Logger
LogFactory
。 我应该为此使用
visitLiteral()
吗?

java sonarqube
2个回答
1
投票

您有多种选择来实现这一目标,最简单的一种是按照

tutorial
中的描述编写扩展org.sonar.plugins.java.api.IssuableSubscriptionVisitor的自定义规则(正如@user7790438在您的问题的评论中完美指出的那样......您可能必须适应其中描述的内容,但它为您提供了基础知识),并注册到
Tree.Kind.Identifier
节点。

然后,一旦访问了所有 Identifier 节点,只需将给定节点转换为

org.sonar.plugins.java.api.tree.IdentifierTree
,并取回他们的
name()
。从那里,您可以检查它是否称为
Logger
LoggerFactory

另一种方法可能是订阅

Tree.Kind.IMPORT
树并简单地检查合格的标识符。但是使用星号导入会降低效率,并且不允许您找到所有出现的情况。

供您参考,您无法访问文字,因为您最终只会访问该语言的文字(字符串、整数、双精度数、布尔值等),就像方法名称建议的那样...


0
投票

对于任何寻找该教程的人,请尝试这里:https://github.com/SonarSource/sonar-java/blob/master/docs/CUSTOM_RULES_101.md

© www.soinside.com 2019 - 2024. All rights reserved.