繁体   English   中英

规则鱿鱼问题:S1166-使用Util方法记录异常

[英]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没有发现任何问题。

环境:

  • 声纳Qube 7.0
  • 声纳Java 5.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM