Sonarqube, "String не содержит спецификаторов формата" при записи константного сообщения String

SonarQube жалуется на то, что "String не содержит спецификаторов формата". при использовании 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

Однако в этом правиле мы можем найти следующую цитату:

Каждая спецификация преобразования вводится символом%, сопровождаемым (по порядку) по

Ноль или более флагов (в любом порядке), которые изменяют значение спецификации преобразования

Это я что-то пропустил, или это правило не так хорошо реализовано? Любой опыт с этим?

Ответ 1

Это известная проблема с SonarJava 5.1. Вы можете смело рассматривать эту проблему как ложноположительную (FP) и/или игнорировать ее. Он уже был исправлен при обработке JIRA-билета SONARJAVA-2633.

Исправление было поставлено с версией 5.1.1 анализатора SonarJava, выпущенной 16 февраля 2018 года (требуется SonarQube LTS 6.7 или выше).

Обновление для автономных пользователей SonarLint

Для пользователей SonarLint, работающих с автономными версиями (не подключенными к какому-либо экземпляру SonarQube), вы все равно можете наблюдать проблему в зависимости от используемой вами версии. Если вы используете:

  • SonarLint для Eclipse 3.5: включает версию 5.1.0.13090 SonarJava, поэтому вы по-прежнему будете следить за FP на своем коде. В следующем выпуске будет использована более поздняя версия SonarJava, поэтому будет устранена проблема. Следующая версия ожидается на конец мая - начало июня 2018 года.
  • SonarLint для IntelliJ 3.4 (выпущен 9 мая 2018 года): включает SonarJava 5.3.0.13828, что означает, что проблема исправлена. Обновление вашей версии до последней выпущенной версии должно затем устранить проблему.