6

Ho questa classe per avviare il server di configurazione spring-cloud. È un'applicazione di avvio a molla.Sonar si lamenta della configurazione Spring Boot

@SpringBootApplication 
@EnableConfigServer 
@EnableDiscoveryClient 
public class ConfigServerApplication { 

    public static void main(String[] args) { 

     SpringApplication.run(ConfigServerApplication.class, args); 

    } 

} 

L'applicazione funziona correttamente e tutti i miei test di unità vanno bene. Tuttavia, nella nostra pipeline di bambù, inizializzerà un processo sonar per analizzare il codice. Continuiamo a ottenere questi avvertimenti minori indicando il seguente:

Utility classes should not have a public constructor 

So che questo è un problema minore, ma mi è stato affidato il compito di rimuovere questi dal nostro codice.

Idealmente, si dovrebbe contrassegnare la classe finale e fornire un costruttore privato, o così tutte le ricerche forniscono come soluzione. Tuttavia, una classe Spring Configuration non può essere resa definitiva e non può avere un costruttore privato.

Qualche idea su come risolvere questo problema?

risposta

5

Ho paura che questo non rappresenti un problema in grado di risolvere lo spring-boot o il spring cloud. È necessario aggiungere eccezioni alla configurazione del sonar.

+0

Grazie a @spencergibb Questo è quello che stavo pensando anch'io. Tuttavia, penserei che il sonar vedrebbe che quella classe contiene un metodo principale statico pubblico e lo usa come eccezione a quella regola. – dmfrey

+0

P.S. Piacere di conoscerti a SpringOne2gx. Ho apprezzato i tuoi discorsi. – dmfrey

+0

Grazie! piacere anche a me. – spencergibb

-1

La regolazione delle impostazioni del sonar sarebbe un approccio più gradevole, naturalmente, ma se si desidera please the machine spirits, è possibile semplicemente aggiungere una funzione fittizia non statica alla classe, rendendola "non-utility" agli occhi del Sonar checker.

+0

un mio collega ha raccomandato la stessa cosa. – dmfrey

+0

Questo è davvero un intralcio, si prega di segnalare un problema per migliorare la regola e contrassegnarlo come falso positivo nell'istanza del sonarqube. – benzonico

+0

@benzonico Non avevo intenzione di implementarlo, ma è stato semplicemente divertente che sia venuto fuori più volte. – dmfrey

0

E 'facile prova:

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

    @Test 
    public void shouldLoadApplicationContext() { 
    } 

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

} 

Ora Sonar sta dicendo, questo è testato!
(Kudos va a: Robert @https://stackoverflow.com/a/41775613/863403)

Problemi correlati