有没有办法配置Checkstyle,PMD或FindBugs Maven插件来检测这样的代码:
logger.debug("string" + stringVariable);
而不是:
logger.debug("format string {}", stringVariable);
答案 0 :(得分:5)
很棒的问题!
我刚刚为findbugs找到了一系列其他规则,涵盖了你的案例(还有更多):https://github.com/eller86/findbugs-slf4j
检查SLF4J_FORMAT_SHOULD_BE_CONST
应该允许您在格式字符串中找到字符串连接。
答案 1 :(得分:1)
除了Slava的帖子(最适合你的需求)之外,findbugs中有一些方法可以检查字符串问题(例如SBSC_USE_STRINGBUFFER_CONCATENATION),fb-contrib也有检查它的模式。与您相关的应该是:
FB-contrib几乎为findbug添加了200个bug模式,所以它非常值得。
答案 2 :(得分:0)
迟了4年但值得张贴的问题也是PMD的问题。以下是使用XPath创建PMD规则的语法(从此处配置规则的方法非常简短):
//PrimaryPrefix/
Name[matches(@Image,'logger.trace|logger.debug|logger.info|logger.warn|logger.error|logger.fatal')]
/../../PrimarySuffix//ArgumentList/*[1]//AdditiveExpression
答案 3 :(得分:-1)
这样做。
logger.debug(String.format("format string %s ", stringVariable));
或
logger.debug(MessageFormat.format("format string {0}", new Object[]{stringVariable }));