[Sonarqube] [Java] printf式格式应正确使用



看来,最新版本可以使用新规则。我有几个问题报告为"应该正确使用printf式格式字符串(squid:s3457("

我不明白描述和我的情况有什么问题:

LOGGER.info("Checking for client process pid: {0}", parentProcessId);
// issue: String contains no format specifiers

在规则说明中我们有:

java.util.Logger logger;
logger.log(java.util.logging.Level.SEVERE, "Result {0}.", myObject.toString()); // Noncompliant; no need to call toString() on objects
logger.log(java.util.logging.Level.SEVERE, "Result.", new Exception()); // compliant, parameter is an exception
logger.log(java.util.logging.Level.SEVERE, "Result '{0}'", 14); // Noncompliant {{String contains no format specifiers.}}

java.util.Logger logger;
logger.log(java.util.logging.Level.SEVERE, "Result {0}.", myObject);
logger.log(java.util.logging.Level.SEVERE, "Result {0}'", 14);

我的案件有什么区别?您能帮我了解编写它的正确方法是什么?

了解我的错误,使用SLF4J Logger,{}需要使用{0}

不规格的代码示例

logger.info(" query:",query(;

logger.info(" query:{0}",query(;//问题:字符串不包含格式指定器

兼容解决方案

logger.info(" query:{}",query(;

最新更新