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

vbkedwbf  于 11个月前  发布在  Java
关注(0)|答案(1)|浏览(131)

我想使用Java在Sonarqube中构建一个自定义规则,它可以捕获以下事件的发生:

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

字符串
或者代码中的单词LoggerLogFactory。我应该使用visitLiteral()吗?

djmepvbi

djmepvbi1#

您有多种选择来实现这一点,最简单的一个是编写您的自定义规则扩展org.sonar.plugins.java.api.IssuableSubscriptionVisitor,遵循tutorial中所描述的内容(正如@user7790438在您的问题的评论中所指出的那样......您可能必须适应其中所描述的内容,但它为您提供了基础知识),并注册到Tree.Kind.Identifier节点。
然后,一旦访问了所有的标识符节点,只需将给定的节点转换为org.sonar.plugins.java.api.tree.IdentifierTree,并检索它们的name()。从那里,您将能够检查它是否被称为LoggerLoggerFactory
另一种方法是订阅Tree.Kind.IMPORT树,然后简单地检查限定标识符。但是使用星型导入会使其效率不高,并且不允许您找到所有的占位符。
对于您的信息,您不能访问字面量,因为您最终只能访问语言的字面量(字符串,整数,双精度,布尔值等),就像方法的名称所建议的那样。

相关问题