查找带注释的方法调用作为Logger方法的参数



假设我在Person类下面有一个getAccountNumber((方法,该方法具有@ShouldNotBeLogged自定义注释。

public class Person {
private String name;
private String accountNumber;
@ShouldNotBeLogged
public String getAccountNumber() {
return accountNumber;
}
}

考虑到上面的Person类,我想找到使用Logger类记录getAccountNumber((方法的所有情况-error|warn|debug|info方法,如下面的HelloWorld类logMessage方法。请注意,在实际代码中有许多方法带有ShouldNotBeLogged注释,因此我们无法在其中创建方法名称的搜索。

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class HelloWorld {

private static final Logger logger = LogManager.getLogger(HelloWorld.class);

public void logMessage(Person person) {
logger.debug("logging Acc No. - {}", person.getAccountNumber()); // Occurence Type 1
LogManager.getLogger(HelloWorld.class).info("Account Number - {}", person.getAccountNumber()); // Occurence Type 2
}
}

我已经尝试使用方法调用现有模板,并为$MethodCall$提供了带有-error|warn|debug|info的文本过滤器,它找到了带有error、warn、debug或info名称的Logger方法。无法为$Instance$&参数$where Instance将是Logger类型(可以实例化为类的常量,也可以直接使用Logger类方法(,Parameter将是对@ShouldNotBeLogged注释方法的调用。

$Instance$$MethodCall$($Parameter$(

我正在使用IntelliJ IDEA 2022.2(终极版(

这是一个困难的情况。希望这能对你有所帮助。

首先,创建一个搜索,查找@ShouldNotBeLogged注释的方法:

@ShouldNotBeLogged
$ReturnType$ $Method$($ParameterType$ $Parameter$);

$Parameter$上使用计数修饰符[0,∞](该模板基于现有模板"不推荐的方法"(。将此模板保存在一个名称下,例如";不应该被记录的方法";。

$logger$.$call$($arg1$, $method$())

修改器:
$logger$:type=Logger
$method$:reference=Methods that should not be logged

这将查找所有以调用@ShouldNotBeLogged注释方法作为第二个参数的记录器调用。

不幸的是,如果您想在不同的位置找到对@ShouldNotBeLogged注释方法进行调用的记录器调用,则必须构造一个单独的查询模板。例如:

$logger$.$call$($arg1$, $arg2$, $method$())

相关内容

  • 没有找到相关文章

最新更新