java - Sonarqube, "String contains no format specifiers"记录常量字符串消息时

标签 java sonarqube

SonarQube 提示“字符串不包含格式说明符。”使用 org.slf4j.Logger 时,特别是方法“public void debug(String msg)”。例如

 log.info("message");

指的是这条规则:https://wiki.sei.cmu.edu/confluence/display/c/FIO47-C.+Use+valid+format+strings

但是,在这条规则中,我们可以找到以下引用:

Each conversion specification is introduced by the % character followed (in order) by

Zero or more flags (in any order), which modify the meaning of the conversion specification

是我遗漏了什么,还是这条规则没有很好地执行?有这方面的经验吗?

最佳答案

这是 SonarJava 5.1 引入的一个已知问题。您可以放心地将此问题视为误报 (FP) 和/或忽略它。处理JIRA票证时已修复SONARJAVA-2633 .

该修复程序已与 2018 年 2 月 16 日发布的 5.1.1 版 SonarJava 分析器一起提供(需要 SonarQube LTS 6.7 或更高版本)。

SonarLint 独立用户更新

对于使用独立版本(未连接到任何 SonarQube 实例)的 SonarLint 用户,您可能仍会根据所使用的版本观察到问题。如果您正在使用:

  • SonarLint for Eclipse 3.5:它包含 SonarJava 的 5.1.0.13090 版本,因此您仍会在代码中观察到 FP。下一个版本将使用更新版本的 SonarJava,从而解决该问题。下一版本预计将于 2018 年 5 月底/6 月初发布。
  • SonarLint for IntelliJ 3.4(2018 年 5 月 9 日发布):包含 SonarJava 5.3.0.13828,表示该问题已修复。将您的版本更新到最新发布的版本应该可以解决该问题。

关于java - Sonarqube, "String contains no format specifiers"记录常量字符串消息时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48683723/

相关文章:

java - 如何在 Spring Boot 中发送请求范围 bean 作为响应

javascript - Sonarqube 不从 LCOV 检索我的 JavaScript 覆盖率

sonarqube - 在提交之前如何使用 SonarQube?

java - 自定义 SonarQube 规则来识别实例变量

java - Gradle:如何在单独的进程/JVM 上运行 Sonar

java - Java 中的新对象发送编译错误

javascript - 在Node js中调用Java方法

java - 如何在每个@Test之前运行@BeforeClass方法

java - Hibernate、Oracle、Join Tables 和关键问题

sonarqube - "complexity"指标和 "complexity/method"指标之间的差异