web-dev-qa-db-fra.com

Sonarqube, "String ne contient aucun spécificateur de format" lors de la consignation du message String constant.

SonarQube se plaint de " String ne contient aucun spécificateur de format ." en utilisant org.slf4j.Logger, en particulier la méthode "public void debug(String msg)". Par exemple

 log.info("message");

Il fait référence à cette règle: https://wiki.sei.cmu.edu/confluence/display/c/FIO47-C.+Use+valid+format+strings

Cependant, dans cette règle, nous pouvons trouver la citation suivante:

Chaque spécification de conversion est introduite par le caractère% suivi (dans l’ordre) par

Zéro ou plusieurs indicateurs (dans n'importe quel ordre), qui modifient la signification de la spécification de conversion

Est-ce moi qui manque quelque chose ou cette règle n'est-elle pas bien appliquée? Une expérience avec ça?

25
Jonathan Schoreels

Il s'agit d'un problème connu introduit avec SonarJava 5.1. Vous pouvez sans risque considérer ce problème comme un faux positif et/ou l'ignorer. Il a déjà été corrigé lors de la gestion du ticket JIRA SONARJAVA-26 .

Le correctif a été livré avec la version 5.1.1 de l'analyseur SonarJava, publiée le 16 février 2018 (nécessite SonarQube LTS 6.7 ou une version supérieure).

Mise à jour pour les utilisateurs autonomes SonarLint

Pour les utilisateurs SonarLint travaillant avec des versions autonomes (non connectés à une instance SonarQube), vous pouvez toujours observer le problème en fonction de la version que vous utilisez. Si vous utilisez:

  • SonarLint pour Eclipse 3.5: Il comprend la version 5.1.0.13090 de SonarJava, vous observerez donc toujours le FP sur votre code. La prochaine version utilisera une version plus récente de SonarJava, ce qui résoudra le problème. La prochaine version est attendue pour la fin mai/début juin 2018.
  • SonarLint pour IntelliJ 3.4 (publié le 9 mai 2018): Il comprend SonarJava 5.3.0.13828 , ce qui signifie que le problème a été corrigé. La mise à jour de votre version vers la dernière version publiée devrait alors résoudre le problème.