wake-up-neo.com

Konfigurieren Sie Sonar, um Dateien aus Maven pom.xml auszuschließen

Ich habe ein Projekt in maven konfiguriert und die Code-Analyse wird von SonarQube durchgeführt.

Ich versuche, SonarQube in der Datei pom.xml so zu konfigurieren, dass einige Dateien von der Codeanalyse ausgeschlossen werden. Diese Dateien können anhand ihrer Klassennamen identifiziert werden. Sie enthalten das Unterstreichungszeichen vor der Erweiterung (sie sind Metamodel-Klassen). Im Folgenden gebe ich den Teil der Datei pom.xml an, an dem ich sie ausschließen möchte:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <sonar.sources>src/main/Java</sonar.sources>
        <sonar.exclusions>file:**/src/main/Java/**/*_.*</sonar.exclusions>
    </configuration>
</plugin>

Der obige Code funktioniert jedoch nicht. Gibt es eine Möglichkeit, SonarQube aus meiner pom.xml-Datei zu konfigurieren, um diese Dateien bei der Analyse des Quellcodes zu ignorieren?

Danke im Voraus.

26
pappus

Sonar-Ausschlüsse (wie auch andere Sonar-Eigenschaften) müssen zum Abschnitt <properties> der POM-Datei hinzugefügt werden. So (Beispiel zum Ausschluss von automatisch generiertem jOOQ-Code aus aktuellem Projekt):

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sonar.Host.url>http://www.example.com/</sonar.Host.url>
    <sonar.jdbc.url>jdbc:postgresql://www.example.com/sonar</sonar.jdbc.url>
    <sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
    <sonar.jdbc.username>sonar</sonar.jdbc.username>
    <sonar.jdbc.password>sonar</sonar.jdbc.password>
    <sonar.exclusions>org/binarytherapy/generated/**/*, **/GuiceBindComposer.Java</sonar.exclusions>
    <sonar.dynamic>reuseReports</sonar.dynamic>
</properties>
49
Mikkel Løkke

in <sonar.exclusions> erwähnte Klassen/Pakete schließen die angegebenen Klassen von der statischen Analyse durch Sonar aus, <sonar.coverage.exclusions> schließt jedoch nur bestimmte Klassen/Pakete von der Abdeckung aus und wird dennoch auf andere Parameter analysiert.

<properties>
    <sonar.coverage.exclusions>
        **/domain/**/*,
        **/pojos/*
    </sonar.coverage.exclusions>
</properties>

Referenz:

Quelle: 

9
Amit Kaneria

Wenn Sie Ihre Sonarausschlüsse wie in der akzeptierten Antwort angegeben ausführen, stellen Sie sicher, dass Sie diesem Musteransatz in der SonarQube-Dokumentation folgen :

Relative Pfade basieren auf dem vollständig qualifizierten Namen der Komponente (wie im Folgenden angezeigt):

src/main/Java/org/sonar/batch/phases/AbstractPhaseEvent.Java

Beispiele:

# Exclude all classes ending with "Bean"
# Matches org/sonar.api/MyBean.Java, org/sonar/util/MyOtherBean.Java, etc.
**/*Bean.Java

# Exclude all classes in the "src/main/Java/org/sonar" directory
# Matches src/main/Java/org/sonar/MyClass.Java, src/main/Java/org/sonar/MyOtherClass.Java
# But does not match src/main/Java/org/sonar/util/MyClassUtil.Java
src/main/Java/org/sonar/*

# Exclude all files in the "bank" directory and its sub-directories
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl, bank/data/REM012345.cob
bank/**/*

# Exclude all COBOL programs in the "bank" directory and its sub-directories whose extension is .cbl
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl
bank/**/*.cbl

Wenn Sie alle Klassen ausschließen möchten, die mit "Bean" enden, und alle Klassen im Verzeichnis "src/main/Java/org/sonar" (aber nicht in ihren Unterverzeichnissen), fügen Sie der properties des Pom die folgende sonar.exclusions-Eigenschaft hinzu:

<properties>
  ...
  <sonar.exclusions>**/*Bean.Java,src/main/Java/org/sonar/*</sonar.exclusions>
</properties>
3
Voicu

Ich habe Sonar verwendet, um diePHPCode-Basis zu analysieren. Sowohl <sonar.exclusions> als auch <sonar.coverage.exclusions> haben den Trick nicht getan . Meine Lösung: Anstatt die Ausschlüsse festzulegen, habe ich am Ende die Einschlussverzeichnisse wie folgt angegeben:

<properties>
  .........
  <sonar.exclusions>./app/models,./app/controllers</sonar.exclusions>
  .........
</properties>
0
Sudheesh.M.S