SonarQube在Spring Boot项目中"关闭此ConfigurableApplicationContext"

kim*_*eik 20 java spring spring-boot sonarqube

我在main方法中有阻塞问题"关闭此"ConfigurableApplicationContext""

public static void main(String[] args)
{
    SpringApplication.run(MyApplication.class, args);
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过SonarQube示例中的代码

public static void main(String[] args)
{
    ConfigurableApplicationContext context = null;
    try
    {
        context = SpringApplication.run(MyApplication.class, args);
    }
    finally
    {
        if (context != null) {
            context.close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但它在开始后就关闭了上下文.

如何解决这个问题?

And*_*son 25

SonarQube报告的问题是误报,应该被忽略.SonarQube的FAQ列出了一些消除误报的选项:

误报并且不会修复

您可以通过问题界面将个别问题标记为误报或不会修复.但是,此解决方案不适用于分支 - 您必须为正在分析的每个分支重新标记问题False Positive.因此,如果正在分析项目的多个分支,则可能更喜欢使用代码内方法:

// NOSONAR

您可以使用规则引擎中嵌入的机制(// NOPMD ...)或SonarQube中实现的通用机制:将// NOSONAR放在问题行的末尾.这将抑制这个问题.

关闭问题

您可以查看问题,直接从用户界面将其标记为误报.

  • 当// NOSONAR工作时,它会禁用所有声纳检查,但仅限于该行.替代方案是专门禁用对单个规则的检查; 在这种情况下,您可以通过在主方法上添加`@SuppressWarnings("squid:S2095")`来实现. (8认同)