在我们的代码中,我们一次又一次地遇到这样的问题:当在使用记录器和String.format(.)之间切换时,有人忘记了调整占位符的用法。方法。
对于日志语句,必须使用“{}”作为占位符,如下所示:
logger.info("File {} successfully opened: {} bytes read, {} objects created", file, nrBytes, nrObjects); 但是当使用String.format(.)要编写消息,必须使用‘'%s’‘作为字符串的占位符,语句必须读取:
logger.info(String.format("File %s successfully opened: %s bytes read, %s objects created", file, nrBytes, nrObjects)); 在记录错误时,通常使用第二种形式,其中第二个参数是要记录的Throwable。
很多时候,人们忘记了这些细节,然后我们得到了错误的日志语句,这些语句输出的都是不合理的。
我知道并同意这绝对不是一个架构问题,而是一个简单的编程错误,但是如果可以(ab-)使用ArchUnit来检查String.format()-method的第一个字符串参数‘'%s’(或'{}')的使用情况,那就太好了。这样的事有可能吗?
发布于 2022-08-16 10:53:38
如前所述,ArchUnit无法做到这一点-- PMD的无效日志消息格式规则很有用(我发现PMD比声纳更容易处理)。
https://stackoverflow.com/questions/65876645
复制相似问题