Sonar 抱怨 Spring 引导配置
Sonar complains about Spring Boot configuration
我有这个 class 来启动 spring-云配置服务器。这是一个 spring-引导应用程序。
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigServerApplication {
public static void main( String[] args ) {
SpringApplication.run( ConfigServerApplication.class, args );
}
}
应用程序运行良好,我的所有单元测试都很好。然而,在我们的 bamboo pipeline 中,它会初始化一个 sonar 进程来分析代码。我们不断收到这些指示以下内容的小警告:
Utility classes should not have a public constructor
我知道这是一个小问题,但我的任务是从我们的代码中删除这些问题。
理想情况下,您可以将 class 标记为 final 并提供私有构造函数,或者所有搜索都作为解决方案提供。但是,Spring 配置 class 不能成为最终的,也不能有私有构造函数。
有什么解决办法吗?
这恐怕不是spring-boot或spring-cloud可以解决的问题。您需要为您的声纳配置添加例外。
调整你的声纳设置当然是一个更好的方法,但如果你想 please the machine spirits,你可以简单地向你的 class 添加一个非静态虚拟函数,使其 "non-utility" 在 Sonar 检查器的眼中。
容易测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class YourApplicationTest {
@Test
public void shouldLoadApplicationContext() {
}
@Test
public void applicationTest() {
YourApplication.main(new String[] {});
}
}
现在Sonar在说,这个已经测试过了!
(感谢:Robert @ )
我有这个 class 来启动 spring-云配置服务器。这是一个 spring-引导应用程序。
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigServerApplication {
public static void main( String[] args ) {
SpringApplication.run( ConfigServerApplication.class, args );
}
}
应用程序运行良好,我的所有单元测试都很好。然而,在我们的 bamboo pipeline 中,它会初始化一个 sonar 进程来分析代码。我们不断收到这些指示以下内容的小警告:
Utility classes should not have a public constructor
我知道这是一个小问题,但我的任务是从我们的代码中删除这些问题。
理想情况下,您可以将 class 标记为 final 并提供私有构造函数,或者所有搜索都作为解决方案提供。但是,Spring 配置 class 不能成为最终的,也不能有私有构造函数。
有什么解决办法吗?
这恐怕不是spring-boot或spring-cloud可以解决的问题。您需要为您的声纳配置添加例外。
调整你的声纳设置当然是一个更好的方法,但如果你想 please the machine spirits,你可以简单地向你的 class 添加一个非静态虚拟函数,使其 "non-utility" 在 Sonar 检查器的眼中。
容易测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class YourApplicationTest {
@Test
public void shouldLoadApplicationContext() {
}
@Test
public void applicationTest() {
YourApplication.main(new String[] {});
}
}
现在Sonar在说,这个已经测试过了!
(感谢:Robert @