加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在我的Java代码中,关键的SonarLint问题S1166是否是误报?

发布时间:2020-12-15 03:03:44 所属栏目:Java 来源:网络整理
导读:SonarLint 1.0.0 for Eclipse标记了我的代码中的一个关键问题,我无法理解为什么以及如何解决它.这真的对我来说是假的 – 或者我错过了什么? import org.apache.log4j.Logger;[...]public final class Foo { private static final Logger logger = Logger.ge
SonarLint 1.0.0 for Eclipse标记了我的代码中的一个关键问题,我无法理解为什么以及如何解决它.这真的对我来说是假的 – 或者我错过了什么?
import org.apache.log4j.Logger;

[...]

public final class Foo {

    private static final Logger logger = Logger.getLogger(Foo.class);

    [...]

    public static void foo() {

        MyCommand command = new MyCommand(foo,bar);
        try {
            commandService.executeCommand(command);
        } catch (CommandException e) {
            logger.error("My command execution failed",e);
        }
    }

    [...]

以下是匹配SonarLint rule description的摘录:

When handling a caught exception,the original exception’s message and
stack trace should be logged or passed forward.

Noncompliant Code Example

06001

Compliant Solution

06002

在我看来,我的代码符合给定的兼容解决方案的第一个变体,但SonarLint不接受它.

不久之前有another discussion of Sonar rule S1166,但它并不是真的与我有同样的问题.

编辑:回答以下问题:我使用log4j进行日志记录.我扩展了代码以反映这一点.

解决方法

实际上,您正在记录原始异常的消息和堆栈跟踪;这是一个错误的发现.

可能是规则没有Log4j的特定知识,但缺乏所有日志库的全知性,异常作为参数传递的事实就足够了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读