6

Ich habe diese Klasse, um den Spring-Cloud-Konfigurationsserver zu starten. Es ist eine Spring-Boot-Anwendung.Sonar beschwert sich über Spring Boot-Konfiguration

@SpringBootApplication 
@EnableConfigServer 
@EnableDiscoveryClient 
public class ConfigServerApplication { 

    public static void main(String[] args) { 

     SpringApplication.run(ConfigServerApplication.class, args); 

    } 

} 

Die Anwendung läuft gut und alle meine Unit Tests sind in Ordnung. In unserer Bambus-Pipeline wird es jedoch einen Sonar-Prozess initiieren, um den Code zu analysieren. Wir halten immer diese kleinen Warnungen anzeigt, wie folgt zusammen:

Utility classes should not have a public constructor 

Ich weiß, dass dies ein kleineres Problem ist, aber ich habe mit dem Entfernen von unserem Code beauftragt worden.

Idealerweise würden Sie die Klasse final markieren und einen privaten Konstruktor bereitstellen, so dass alle Suchen als Lösung dienen. Eine Spring Configuration-Klasse kann jedoch nicht endgültig festgelegt werden und kann keinen privaten Konstruktor haben.

Irgendwelche Ideen, wie man das löst?

Antwort

5

Ich fürchte, das ist kein Problem, Spring-Boot oder Feder-Wolke lösen kann. Sie müssen Ihrer Sonarkonfiguration Ausnahmen hinzufügen.

+0

Dank @spencergibb Das ist, was ich auch dachte. Ich würde jedoch denken, Sonar würde sehen, dass diese Klasse eine öffentliche statische Hauptmethode enthält und diese als Ausnahme für diese Regel verwendet. – dmfrey

+0

P.S. Schön dich bei SpringOne2gx zu treffen. Genossen deine Gespräche. – dmfrey

+0

Danke! Schön, dich auch zu kennen. – spencergibb

-1

Das Anpassen Ihrer Sonareinstellungen wäre natürlich ein netterer Ansatz, aber wenn Sie please the machine spirits möchten, können Sie einfach eine nicht statische Dummy-Funktion zu Ihrer Klasse hinzufügen, was sie in den Augen des Sonars "nicht nützlich" macht Prüfer.

+0

ein Coworking von mir empfahl die gleiche Sache. – dmfrey

+0

Dies ist wirklich hacken herum, bitte melden Problem, um die Regel zu verbessern und markieren Sie es als falsch positiv in Ihrer sonarqube-Instanz. – benzonico

+0

@benzonico Ich würde es nicht implementieren, aber es war nur komisch, dass es mehrmals kam. – dmfrey

0

Es ist einfach zu testen:

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

    @Test 
    public void shouldLoadApplicationContext() { 
    } 

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

} 

Jetzt Sonar sagt, wird diese geprüft!
(Kudos geht zu: Robert @https://stackoverflow.com/a/41775613/863403)

Verwandte Themen