![](/img/trans.png)
[英]Why does squid:S1166 not accept exception messages only when logging caught exceptions?
[英]Issue with Rule squid:S1166 - Using Util method to log exception
我们正在使用util方法来处理捕获的异常。 即使我们正在从Util方法记录该异常,也会收到违反Sonar Qube的“无论是记录还是重新抛出此异常”的信息。
示例代码:
catch (Exception e) {
LogUtils.logErr(e);
}
LogUtils.logErr(e):
public static void logErr(Throwable e) {
StackTraceElement[] ste = Thread.currentThread()
.getStackTrace();
String className = ste[2].getClassName();
String methodName = ste[2].getMethodName();
logger.error(buildMessage(className, methodName, ""), e);
sendEmail(null, e);
}
请让我知道是否有解决方法可以使声纳忽略这种用法。 提供的规则似乎有问题。 请确认..
抱歉,评论太久了...
您的环境是什么? 您如何执行分析?
我创建了两个类:
public class S1166 {
public static Integer parse(String text) {
try {
return Integer.parseInt(text);
} catch (Exception e) {
LogUtils.log(e);
return null;
}
}
}
LogUtils:
public final class LogUtils {
private static final Logger logger = Logger.getLogger("name");
private LogUtils() {
// blocks the possibility to create a new instance
}
public static void log(Throwable e) {
StackTraceElement[] ste = Thread.currentThread().getStackTrace();
String className = ste[2].getClassName();
String methodName = ste[2].getMethodName();
logger.log(Level.FINEST, String.format("%s#%s", className, methodName), e);
}
}
SonarQube没有发现任何问题。
环境:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.