web-dev-qa-db-ja.com

Sonarqube、定数文字列メッセージを記録するときの「文字列には書式指定子が含まれていません」

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

ただし、このルールでは、次の引用符を見つけることができます。

各変換仕様は、%文字で始まり、その後に(順番に)続きます。

変換仕様の意味を変更するゼロ以上のフラグ(任意の順序)

何かを見逃しているのは私ですか、それともこのルールはうまく実装されていませんか?それに関する経験はありますか?

25

これはSonarJava 5.1で導入された既知の問題です。この問題は誤検知(FP)と見なすか、無視できます。 JIRAチケットの処理中に既に修正されています SONARJAVA-26

修正は、2018年2月16日にリリースされたSonarJavaアナライザーのバージョン5.1.1で提供されました(SonarQube LTS 6.7以上が必要です)。

SonarLintスタンドアロンユーザーの更新

SonarLintユーザーがスタンドアロンバージョン(SonarQubeインスタンスに接続されていない)で作業している場合、使用しているバージョンによっては問題が引き続き発生する場合があります。使用している場合:

  • Eclipse 3.5用のSonarLint:SonarJavaのバージョン5.1.0.13090が含まれています。したがって、コードでFPを引き続き使用します。次のリリースでは、より新しいバージョンのSonarJavaを使用するため、問題が解決します。次のバージョンは、2018年5月末または6月末に予定されています。
  • IntelliJ 3.4用のSonarLint(2018年5月9日にリリース):SonarJava5.3.0.13828、これは問題が修正されたことを意味します。バージョンを最新リリースバージョンに更新すると、問題が修正されます。