You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Sonar提示「仅应条件性调用方法」的代码问题?

修复Sonar检测的"仅应条件性调用方法"问题

你的代码:

logger.debug("Message:Request", new Gson().toJson(req));

Sonar检测提示:

仅应条件性调用方法(Invoke method(s) only conditionally)

问题原因

不管当前日志级别是否为DEBUG,new Gson().toJson(req)都会被执行,这会带来额外的序列化开销——尤其是当req对象体积较大时,这种不必要的性能损耗会更明显。

修复方案

有两种常用的修复方式:

方式一:先判断日志级别再执行序列化

手动检查DEBUG级别是否开启,只有开启时才执行序列化并打印日志:

if (logger.isDebugEnabled()) {
    logger.debug("Message:Request", new Gson().toJson(req));
}

方式二:利用SLF4J的延迟加载特性(推荐)

如果你的日志框架基于SLF4J(比如Logback、Log4j2),可以使用带Supplier参数的重载方法,序列化逻辑会在日志级别开启时才执行:

logger.debug("Message:Request", () -> new Gson().toJson(req));

内容的提问来源于stack exchange,提问作者NEHA SINGH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:09:15