【发布时间】:2017-11-01 03:12:49
【问题描述】:
我们公司刚刚建立了一个声纳农场。我对我们的代码质量很好奇,想改进。
我有一个包含此类记录器调用的代码:
LOGGER.error(String.format("Cannot load object in status %s (%s)", status, statusDescription), e);
LOGGER.info(String.format("%s object(s) loaded in status %s (%s)", objects.size(), status, statusDescription));
声纳触发规则 squid:S262,仅有条件地调用方法“前提条件”并且日志记录参数不应要求评估。由这两条线触发的规则。
关于这个,我不太清楚发生了什么。解释接缝不太适合我的用例。声纳文档提供了这个例子:
logger.log(Level.DEBUG, "Something went wrong: " + message); // Noncompliant; string concatenation performed even when log level too high to show DEBUG messages
我完全理解(调试不会登录生产,因此会发生不必要的操作)。但是对于信息和错误级别,我假设您无论如何都想记录它。此外,就我而言,我希望两者都被记录。
哪种方法好? 不使用 String.format 以不同方式重写?将声纳调整为不在信息/错误级别上触发?只是忽略这个声纳?还有什么?
【问题讨论】: