Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Sonar抱怨弹簧启动配置_Spring_Spring Boot_Sonarqube_Spring Cloud_Spring Java Config - Fatal编程技术网

Spring Sonar抱怨弹簧启动配置

Spring Sonar抱怨弹簧启动配置,spring,spring-boot,sonarqube,spring-cloud,spring-java-config,Spring,Spring Boot,Sonarqube,Spring Cloud,Spring Java Config,我有这个类来启动SpringCloudConfig服务器。这是一个spring引导应用程序 @SpringBootApplication @EnableConfigServer @EnableDiscoveryClient public class ConfigServerApplication { public static void main( String[] args ) { SpringApplication.run( ConfigServerApplica

我有这个类来启动SpringCloudConfig服务器。这是一个spring引导应用程序

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigServerApplication {

    public static void main( String[] args ) {

        SpringApplication.run( ConfigServerApplication.class, args );

    }

}
应用程序运行良好,我的所有单元测试都正常。然而,在我们的竹管道中,它将启动一个声纳过程来分析代码。我们不断收到这些小警告,表明:

Utility classes should not have a public constructor
我知道这是一个小问题,但我的任务是从代码中删除这些内容

理想情况下,您应该将类标记为final并提供一个私有构造函数,或者所有搜索都提供一个解决方案。但是,Spring配置类不能是最终的,也不能有私有构造函数


有什么办法解决这个问题吗?

恐怕这不是spring boot或spring cloud可以解决的问题。您需要为声纳配置添加例外情况。

调整声纳设置当然是一个更好的方法,但如果您愿意,您可以简单地向类中添加一个非静态虚拟函数,使其在声纳检查器眼中成为“非实用程序”。

很容易测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class YourApplicationTest {

    @Test
    public void shouldLoadApplicationContext() {
    }

    @Test
    public void applicationTest() {
        YourApplication.main(new String[] {});
    }

}
现在声纳说,这是测试

(荣誉归于:罗伯特)

谢谢@Spencergib这也是我当时的想法。然而,我认为sonar会看到该类包含一个公共静态main方法,并将其作为该规则的一个例外。很高兴在SpringOne2gx见到你。很高兴你的演讲。@benzonico我在名单上贴了条信息。谢谢你提供的信息。嗨,你能在问题跟踪系统中添加帖子或问题的链接吗?关于如何仅对SpringBoot应用程序禁用此规则,而不是对所有违反公共构造函数的行为禁用此规则,有什么建议吗,请报告问题以改进规则,并在sonarqube实例中将其标记为假阳性。@benzonico我不打算实施它,但有趣的是它出现了多次。我认为这对他来说有点私人,因为他正在研究Sonar。如果你碰巧报告了这件事,你介意在这里留下一个指向Jira罚单的链接吗?我想知道修复它需要多长时间。不要编写满足工具或目标数字的测试。这就是TDD和单元测试失去作用的地方。这个答案是错误的。