首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ArchUnit可以在方法调用中检查某些字符串模式吗?

ArchUnit可以在方法调用中检查某些字符串模式吗?
EN

Stack Overflow用户
提问于 2021-01-24 22:23:46
回答 2查看 187关注 0票数 0

在我们的代码中,我们一次又一次地遇到这样的问题:当在使用记录器和String.format(.)之间切换时,有人忘记了调整占位符的用法。方法。

对于日志语句,必须使用“{}”作为占位符,如下所示:

代码语言:javascript
运行
复制
logger.info("File {} successfully opened: {} bytes read, {} objects created", file, nrBytes, nrObjects); 

但是当使用String.format(.)要编写消息,必须使用‘'%s’‘作为字符串的占位符,语句必须读取:

代码语言:javascript
运行
复制
logger.info(String.format("File %s successfully opened: %s bytes read, %s objects created", file, nrBytes, nrObjects)); 

在记录错误时,通常使用第二种形式,其中第二个参数是要记录的Throwable。

很多时候,人们忘记了这些细节,然后我们得到了错误的日志语句,这些语句输出的都是不合理的。

我知道并同意这绝对不是一个架构问题,而是一个简单的编程错误,但是如果可以(ab-)使用ArchUnit来检查String.format()-method的第一个字符串参数‘'%s’(或'{}')的使用情况,那就太好了。这样的事有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2021-02-11 20:05:20

ArchUnit,目前版本 0.16.0不分析方法调用的参数值。

然而,声纳规则“应正确使用Printf格式字符串”可能会捕获这些bug。

票数 2
EN

Stack Overflow用户

发布于 2022-08-16 10:53:38

如前所述,ArchUnit无法做到这一点-- PMD的无效日志消息格式规则很有用(我发现PMD比声纳更容易处理)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65876645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档