31 votes

Sonarqube, "String ne contient aucun spécificateur de format" lors de la journalisation d'un message String constant

SonarQube se plaint de la "Chaîne de caractères ne contient pas de spécificateurs de format." lors de l'utilisation d' org.slf4j.Logger, en particulier de la méthode "public void debug(String msg)". Par exemple

 log.info("message");

Il se réfère à cette règle : https://wiki.sei.cmu.edu/confluence/display/c/FIO47-C.+Utilisez+valide+format+cordes

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

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

Zéro, un ou plusieurs indicateurs (dans n'importe quel ordre), qui modifient le sens de l' spécification de conversion

Est-ce moi qui manque quelque chose, ou est-ce la règle de ne pas bien mis en œuvre? Une expérience avec cela ?

38voto

C'est un problème connu introduit avec SonarJava 5.1. Vous pouvez considérer cette question comme un Faux Positif (FP) et/ou de l'ignorer. Il a déjà été fixé lors de la manipulation JIRA billet SONARJAVA-2633.

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

Mise à jour pour SonarLint autonome utilisateurs

Pour SonarLint utilisateurs de travailler avec les versions autonomes (non connecté à tout SonarQube exemple), vous pourrez toujours observer la question en fonction de la version que vous utilisez. Si vous utilisez:

  • SonarLint pour Eclipse 3.5: Il inclut la version 5.1.0.13090 de SonarJava, donc vous pourrez toujours observer la FP sur votre code. La prochaine version va utiliser une version plus récente de SonarJava, par conséquent, la résolution du problème. La prochaine version est prévue pour 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é résolu. Mise à jour de votre version à la dernière version doit alors résoudre le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X