Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sonarqube, "String contains no format specifiers" when logging constant String message

Tags:

java

sonarqube

SonarQube complains about "String contains no format specifiers." when using org.slf4j.Logger, in particular method "public void debug(String msg)". For example

 log.info("message"); 

It refers to this rule : https://wiki.sei.cmu.edu/confluence/display/c/FIO47-C.+Use+valid+format+strings

However, in this rule, we can find the following quote :

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

Is it me that miss something, or is this rule not well implemented? Any experience with that ?

like image 434
Jonathan Schoreels Avatar asked Feb 08 '18 10:02

Jonathan Schoreels


1 Answers

This is a known issue introduced with SonarJava 5.1. You can safely consider this issue as a False Positive (FP) and/or ignore it. It has already been fixed while handling JIRA ticket SONARJAVA-2633.

The fix has been delivered with version 5.1.1 of SonarJava analyzer, released on Feb 16, 2018 (requires SonarQube LTS 6.7 or superior).

Update for SonarLint standalone users

For SonarLint users working with standalone versions (not connected to any SonarQube instance), you may still observe the issue depending of the version you are using. If you are using:

  • SonarLint for Eclipse 3.5: It includes version 5.1.0.13090 of SonarJava, so you will still observe the FP on your code. Next release will use a more recent version of SonarJava, therefore resolving the issue. Next version is expected for end of May/early June 2018.
  • SonarLint for IntelliJ 3.4 (released on May 9, 2018): It includes SonarJava 5.3.0.13828, which means that the issue has been fixed. Updating your version to latest released version should then fix the issue.
like image 181
Wohops Avatar answered Sep 17 '22 17:09

Wohops