6

У меня есть этот класс, чтобы запустить конфигурационный сервер весеннего облака. Это приложение для загрузки пружин.Sonar жалуется на настройку Spring Boot

@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 

Я знаю, что это небольшая проблема, но я была поставлена ​​задача с удалением их из нашего кода.

В идеале вы бы отметили окончательный класс и предоставили частный конструктор, или, таким образом, все поисковые запросы в качестве решения. Однако класс Spring Configuration не может быть окончательным и не может иметь частный конструктор.

Любые идеи, как решить это?

ответ

5

Боюсь, что это не проблема с пружинным сапогом или весенним облаком. Вам нужно добавить исключения в конфигурацию вашего сонара.

+0

Спасибо @spencergibb Это то, о чем я тоже думал. Однако я бы подумал, что сонар увидит, что этот класс содержит общедоступный статический основной метод и использует его как исключение из этого правила. – dmfrey

+0

P.S. Приятно познакомиться с вами в SpringOne2gx. Наслаждался вашими разговорами. – dmfrey

+0

Спасибо! Приятно мне тоже. – spencergibb

-1

Регулировка параметров гидролокатора была бы, конечно, удобнее, но если вы хотите please the machine spirits, вы можете просто добавить нестатический фиктивный элемент в свой класс, что делает его «неудобным» в глазах сонара шашка.

+0

Коворкинг по-моему рекомендовал то же самое. – dmfrey

+0

Это действительно взломать, пожалуйста, сообщите о проблеме, чтобы улучшить правило и пометить его как ложноположительный в вашем экземпляре sonarqube. – benzonico

+0

@benzonico Я не собирался его реализовывать, но было просто смешно, что он появился несколько раз. – dmfrey

0

Это легко проверить:

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

    @Test 
    public void shouldLoadApplicationContext() { 
    } 

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

} 

Теперь Sonar говорит, это испытано!
(Kudos выходит на: Robert @https://stackoverflow.com/a/41775613/863403)

Смежные вопросы