2016-06-09 79 views
7

Sto tentando di escludere del codice generato automaticamente (Riferimenti di servizio) dal codice statico di Sonar e dall'analisi della copertura del test dell'unità. Il progetto è C#. Net e Sonar è in esecuzione tramite Jenkins su un server Windows.Come escludere i file con spazi nel percorso in Sonar?

All'interno del file sonar-project.properties sono in grado di escludere vari altri file e directory utilizzando la proprietà sonar.exclusions, ma questo non funziona per i file che hanno uno spazio nel percorso.

sonar.exclusions=**/Global.asax.cs, **/MyProject/Service References/* 

dato l'esempio sopra i file Global.asax.cs sono esclusi in tutti i progetti all'interno della soluzione, ma i riferimenti di servizio non sono.

ho cercato racchiudere il percorso tra virgolette singole e doppie. Ho provato a utilizzare una barra rovesciata per evitare lo spazio. Ho provato a inserire il percorso come **/MyProject/Service */* per sfruttare il carattere jolly (potrebbe essere rischioso) ma non ha funzionato neanche.

Qualcuno ha una soluzione per questo?

+0

Forse il valore con virgolette funzionerà? Qualcosa come '"/MyProject/Service References "' – DavidG

risposta

5

Ho appena avuto lo stesso problema. Dovevo escludere i file javascript in un progetto, "Il mio progetto", in una cartella Script. Ho provato questo prima:

**/Scripts/**/*.js 

e che ha funzionato bene, ma mi sono reso conto che sarebbe escludere una cartella "Script" in altri progetti. Così l'ho cambiato:

**/My Project/Scripts/**/*.js 

E ha smesso di funzionare. Il mio primo istinto era che lo spazio nel nome del progetto era da biasimare. Quindi ho provato le stesse cose che hai fatto:

"**/My Project/Scripts/**/*.js" 
'**/My Project/Scripts/**/*.js' 
**/My\ Project/Scripts/**/*.js 

ma nessuna ha funzionato.

Poi mi sono imbattuto in questo forum: sonarqube-archive.15.x6.nabble.com/Project-exclusions-for-Code-Coverage-not-working-C-td5023058.html

In particolare questa linea fornito la risposta: Modules (progetti .net) non fanno parte del nome completo. È necessario definire le esclusioni a livello di modulo (progetto .Net).

Vuol dire che il mio errore è stato non avere uno spazio nel nome del progetto, ma compreso il nome del progetto a tutti! Ho cambiato il filtro in questo:

Scripts/**/*.js 

e voilà, i file sono stati correttamente esclusi. Nessuna citazione o fuga necessaria.

Naturalmente, questo lascia ancora il problema che una cartella "Scripts" in un altro progetto wil anche essere escluso. Le informazioni fornite qui: docs.sonarqube.org/display/SCAN/Excluding+Artifacts+from+the+Analysis potrebbero rivelarsi utili per questo.

Uso l'interfaccia Web e non il file di configurazione direttamente, ma questo suggerirebbe anche che se si dispone di più filtri, che l'elenco separato da virgola non deve contenere spazi (diversi da quelli effettivamente nel percorso) perché sono interpretati letteralmente.

+0

Questo non funziona per me. Ho provato sonar.exclusions = Service References/*. Cs come suggerisci e sonar.skippedModules = Service References/*.cs come accennato nel contesto della risposta, ma non ha comportato l'esclusione dei riferimenti di servizio nell'analisi. Potresti chiarire la tua risposta? –

+0

Peccato. Quale tipo di file desideri escludere nella cartella Riferimenti servizio? La mia soluzione esclude solo i file .cs nella cartella Riferimenti servizio. Se si desidera escludere tutti i file, utilizzare sonar.exclusions = Riferimenti servizio/** – PeterH

+0

Se ciò funziona, aggiornerò la risposta – PeterH