SonarQube Escludere una directory


133

Sto cercando di escludere una directory dall'analisi del sonar. Ho le seguenti proprietà definite nel mio sonar-project.propertiesfile:

sonar.sources=src/java
sonar.exclusions=src/java/test/****/*.java

La struttura delle directory che ho è:

src/java/dig
src/java/test/dig

Quando eseguo il sonar-runner ricevo le seguenti informazioni:

 INFO  - Excluded sources:
 INFO  -   src/java/test/**/*.java
 INFO  - Excluded tests:
 INFO  -   **/package-info.java

Ma quando controllo il risultato dell'analisi, tutti i pacchetti all'interno della directory di test sono ancora lì.

Devo solo dire a Sonar di non analizzare la directory di test e tutti i pacchetti al suo interno.


3
Ho trovato la soluzione: sonar.exclusions = test / ** / *. Java
user1982350

Ma se vuoi evitare l'analisi del test puoi provare ad usare ad esempio mvn clean package -DskipTests
Eddú Meléndez

Risposte:


122

Prova qualcosa del genere:

sonar.exclusions=src/java/test/**

4
Assicurati di usare il modello fileglob di Ant per i caratteri jolly. Ecco una buona spiegazione: stackoverflow.com/a/86915/748524
Stephan

Ecco la definizione delle opzioni della riga di comando docs.sonarqube.org/display/SONAR/…
N0dGrand87

4
Chiunque lo veda, assicurati di averlo src/test/javainvece disrc/java/test/ .
Faraz,

Come escludere metodi in c #
nature vetri

È importante notare che questo non è trattato come un'espressione regolare e applicato a tutto il tuo progetto sonar.exclusions=node_modules/** NON escluderà le cartelle nidificate di node_modules che dovrai fare sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**per escluderle esplicitamente
Christian Bartram,

69

Sono in grado di escludere più directory utilizzando la seguente configurazione (percorsi di cartelle separati da virgola):

sonar.exclusions=system/**, test/**, application/third_party/**, application/logs/**

E mentre eseguivo il sonar runner ho ottenuto quanto segue nel registro:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**

18
Ricevo anche il messaggio escluso, ma i file vengono ancora analizzati.
Sebas,

nei parametri di Teamcity ho usato il tuo consiglio, ma inserendo prima -D (-Dsonar.exclu ...). Funziona qui. :-)
Maciel Bombonato il

Come escludere tutti i file * .html dalla scansione qui? Ho provato questo sonar.exclusions=**/bin/**,*.htmlma ci vogliono ancora file html anche nella scansione. I file HTML sono tutte sottocartelle in più posizioni e l'aggiunta nel livello di sottocartella qui con la mappa del percorso effettivo sarà più impegnativa. Esiste un modo per escludere la scansione di tutti * .specific_file_type?
Elamurugan,


13

Se vogliamo saltare l'intera cartella si può usare quanto segue:

sonar.exclusions=folderName/**/*

E se abbiamo un solo file particolare, basta fornire il percorso completo.

Tutta la cartella che deve essere esclusa e aggiunta qui.


2
Qual è la differenza tra quella risposta e sonar.exclusions=folderNamee sonar.exclusions=folderName/**? Grazie
payne il

* - Abbina zero o più caratteri ** - Abbina zero o più directory? - Abbina un singolo personaggio
Keerthi Bandara il

12

Un'altra opzione di configurazione è l'aggiunta di proprietà maven sonar.exclusions. Di seguito è riportato un file pom di esempio con esclusioni della directory jquery statica e della directory del visualizzatore pdf statico.

<project >
<modelVersion>4.0.0</modelVersion>
<artifactId>my Artifact</artifactId>
<!-- Enviroment variables can be referenced as such: ${env.PATH} -->
<packaging>war</packaging>
<url>http://maven.apache.org</url>

<properties>

    <junit.version>4.9</junit.version>
    <mockito.version>1.9.5</mockito.version>
    <jackson.version>1.9.7</jackson.version>
    <powermock.version>1.5</powermock.version>

    <!--Exclude the files Here-->
    <sonar.exclusions>src/main/webapp/static/jquery_ui/*,src/main/webapp/static/pdf-viewer/*,src/main/webapp/static/pdf-viewer/**,src/main/webapp/static/pdf-viewer/**/*</sonar.exclusions>
</properties>


7

Il modo più semplice è quello di andare all'URL del server dopo aver avviato il server (localhost: 8080) quindi accedere come amministratore, Vai su impostazioni> Esclusioni> Esclusioni di file di origine: aggiungi qui i tuoi pacchetti. Riavvia il server.


2

quale versione del sonar stai usando? Esiste un'opzione chiamata " sonar.skippedModules = yourmodulename ".

Questo salterà l'intero modulo. Quindi state attenti.


12
WARN - La proprietà 'sonar.skippedModules' è obsoleta dalla versione 4.3 e non dovrebbe più essere utilizzata.
Zheng Kai

1

Solo per dire che una volta esclusi i file da Sonar, fare lo stesso per il plugin Jacoco:

<configuration>
<excludes>     
<exclude>com/acme/model/persistence/entity/TransactionEntity*</exclude>
<exclude>com/acme/model/persistence/ModelConstants.class</exclude>
</excludes>
</configuration> 

1

Aggiungi percorsi di cartelle separati da virgola sonar.exclusions=**/abc/**,**/def/**

Questo ha funzionato in un progetto angolare


1

Se sei un utente DevOps di Azure alla ricerca di dove e come escludere file e cartelle, ecco qui:

  1. Modifica la tua pipeline
  2. Assicurati di aver aggiunto l'attività "Prepara analisi su SonarQube". Dovrai cercare altrove se hai bisogno di aiuto per configurarlo. Suggerimento: utilizzare l'editor della pipeline dell'interfaccia utente rispetto all'editor yaml se manca il collegamento di gestione. Al momento, non è possibile convertire in UI da yaml. Basta ricreare la pipeline. Se si utilizza git, è possibile eliminare lo yaml dalla radice del repository.
  3. Nella sezione "Avanzate" dell'attività "Prepara analisi su SonarQube", è possibile aggiungere esclusioni. Consulta i consigli forniti da altri per specifici formati di esclusione.

Esempio:

# Additional properties that will be passed to the scanner, 
# Put one key=value per line, example:
# sonar.exclusions=**/*.bin
sonar.exclusions=MyProjectName/MyWebContentFolder/**

Nota: se non si è sicuri del percorso, è possibile accedere a sonarqube, visualizzare il progetto, esaminare tutti o nuovi "odori di codice" e il percorso necessario è elencato sopra ogni raggruppamento di problemi. Puoi prendere il percorso completo di un file o usare caratteri jolly come questi esempi:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

Se non hai aggiunto l'attività "Esegui analisi del codice", fallo e posizionalo da qualche parte dopo l'attività "Crea soluzione ** / *. Sln".

Salva e accoda, quindi controlla il tuo server sonarqube per vedere se le esclusioni hanno funzionato.


0

aggiungi questa riga al tuo file sonar-project.properties

es: sonar.exclusions = src / *. java fai attenzione se vuoi escludere una cartella e all'interno della cartella c'è un file che devi prima escludere i file o aggiungere i file uno per uno, ad esempio immagina che ci sia una cartella come sotto :

src/app.java src/controllers/home.java src/services/test.java

devi fare questo: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Ha funzionato per me


0

Puoi fare lo stesso con build.gradle

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java"
  }
}

E se vuoi escludere più file / directory, allora:

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}

-1

Questo ha funzionato per me:

sonar.exclusions=src/**/wwwroot/**/*.js,src/**/wwwroot/**/*.css

Esclude qualsiasi file .js e .css in una delle sottodirectory di una cartella "wwwroot" che appare come una delle sottodirectory della cartella "src" (radice del progetto).


Ciò non sembra sostanzialmente diverso dalle altre risposte. Utilizza i caratteri jolly a doppia stella proprio come molte altre risposte. Non corrisponde a ciò che la domanda stava cercando di escludere.
Stephen Ostermiller,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.