SonarQube Exclude un director (Programare, Sonarqube, Sonar Runner)

user1982350 a intrebat.

Încerc să exclud un director de la a fi analizat de Sonar. Am următoarele proprietăți definite în sonar-project.properties fișier:

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

Structura directorului pe care o am este:

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

Când execut sonar-runner, obțin următoarele informații:

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

Dar când verific rezultatul analizei, toate pachetele din directorul de testare sunt încă acolo.

Trebuie doar să îi spun lui Sonar să nu analizeze directorul de testare și nici pachetele din el.

Comentarii

  • Am găsit soluția: sonar.exclusions=test/**/*/*.java –  > Por user1982350.
  • Dar dacă doriți să evitați analiza testului, puteți încerca să folosiți, de exemplu mvn clean package -DskipTests –  > Por Eddú Meléndez.
13 răspunsuri
Juan Hernandez

Încercați ceva de genul acesta:

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

Comentarii

  • Asigurați-vă că folosiți modelul Ant fileglob pentru wildcards. Aici este o explicație bună: stackoverflow.com/a/86915/748524 –  > Por Stephan.
  • Aici este definiția opțiunilor de linie de comandă docs.sonarqube.org/display/SONAR/… –  > Por N0dGrand87.
  • Oricine vede acest lucru, asigurați-vă că aveți src/test/java în loc de src/java/test/. –  > Por Faraz.
  • Cum să excludeți metode în c# –  > Por natura vetri.
  • Este important de reținut că acest lucru nu este tratat ca o expresie regulată și aplicat în întregul proiect sonar.exclusions=node_modules/** NU va exclude folderele node_modules imbricate va trebui să faceți sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/** pentru a le exclude în mod explicit –  > Por Christian Bartram.
Damodaran

Sunt capabil să exclud mai multe directoare folosind configurația de mai jos (căi de acces la dosare separate prin virgulă):

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

Și în timp ce rulează sonar runner am primit următoarele în jurnal:

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

Comentarii

    24

  • Primesc și eu mesajul de excludere, dar fișierele sunt în continuare analizate. –  > Por Sebas.
  • în parametrii Teamcity am folosit sfatul tău, dar inserând -D înainte (-Dsonar.excl…). Funcționează aici 🙂 –  > Por Maciel Bombonato.
  • Cum să exclud toate fișierele *.html de la scanare aici? Am încercat acest lucru sonar.exclusions=**/bin/**,*.html dar tot ia fișiere html și în scanare. Fișierele html sunt toate subfoldere în mai multe locuri și adăugarea la nivelul subfolderelor aici cu harta reală a căilor de acces va fi mai mult de lucru. Există o modalitate de a exclude toate fișierele *.specific_file_type de la scanare? –  > Por Elamurugan.
Michael Arul Raja

Acest lucru va funcționa pentru cazul dvs:

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

Comentarii

Akin Okegbile

O altă opțiune de configurare este adăugarea unei proprietăți maven sonar.exclusions. Mai jos este un exemplu de fișier pom cu excluderi ale directorului static jquery și ale directorului static al vizualizatorului pdf.

<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>

Shradha Modi

Dacă dorim să sărim peste întregul dosar, se poate folosi următorul lucru:

sonar.exclusions=folderName/**/*

Și dacă avem doar un singur fișier special, trebuie doar să dăm calea completă.

Toate folderele care trebuie excluse trebuie adăugate aici.

Comentarii

  • Care este diferența dintre acest răspuns și sonar.exclusions=folderName și sonar.exclusions=folderName/** ? Mulțumesc –  > Por payne.
  • * – Potrivește zero sau mai multe caractere ** – Potrivește zero sau mai multe directoare ? – Potrivește un singur caracter –  > Por Keerthi Bandara.
Maverick

Cel mai simplu mod este să mergeți la URL-ul serverului după ce ați pornit serverul (localhost:8080), apoi conectați-vă ca administrator, mergeți la setări>Excluderi> Excluderi de fișiere sursă- Adăugați pachetele dvs. aici.Reporniți serverul.

Cypher

ce versiune de sonar folosiți?Există o opțiune numită „sonar.skippedModules=yourmodulename„.

Aceasta va sări peste întregul modul. Deci, fiți atenți la ea.

Comentarii

  • WARN – Proprietatea ‘sonar.skippedModules’ este depășită de la versiunea 4.3 și nu mai trebuie utilizată. –  > Por Zheng Kai.
user07

Doar pentru a menționa că, odată ce ați exclus fișierele din Sonar, faceți același lucru pentru pluginul Jacoco:

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

dasunse

Adăugați căile de acces la dosare separate prin virgulă sonar.exclusions=**/abc/**,**/def/**

Acest lucru a funcționat într-un proiect angular

mohammad pakivand

adăugați această linie în fișierul sonar-project.properties

ex: sonar.exclusions=src/*.javabe atenție dacă doriți să excludeți un dosar și în interiorul dosarului există un fișier trebuie să excludeți mai întâi fișierele sau să adăugați fișierele unul câte unul, de exemplu, imaginați-vă că există un dosar ca mai jos:

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

trebuie să faceți acest lucru:sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Pentru mine a funcționat.

GrayDwarf

Dacă sunteți un utilizator Azure DevOps și căutați atât unde și cum să excludeți fișiere și foldere, iată:

  1. Editează-ți conducta
  2. Asigurați-vă că aveți adăugată sarcina „Pregătiți analiza pe SonarQube”. Va trebui să căutați în altă parte dacă aveți nevoie de ajutor pentru a configura acest lucru. Sugestie: Utilizați editorul de conducte UI vs. editorul yaml dacă vă lipsește legătura de gestionare. În prezent, nu există nicio modalitate de a converti la UI din yaml. Trebuie doar să recreați conducta. Dacă folosiți git, puteți șterge yaml-ul din rădăcina repo-ului dvs.
  3. În secțiunea „Advanced” (Avansat) a sarcinii „Prepare analysis on SonarQube” (Pregătiți analiza pe SonarQube), puteți adăuga excluderi. Consultați sfaturile oferite de alții pentru formate de excludere specifice.

Exemplu:

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

Notă: Dacă nu sunteți sigur de calea de acces, puteți intra în sonarqube, vizualizați proiectul dvs., uitați-vă la toate sau la noile „Code Smells” și calea de care aveți nevoie este listată deasupra fiecărei grupări de probleme. Puteți prelua calea completă către un fișier sau puteți utiliza wilds, cum ar fi aceste exemple:

  • NumeleProiectului/MyCodeFile.cs
  • NumeleProiectuluiMeu/**

Dacă nu ați adăugat sarcina „Run Code Analysis” (Executarea analizei de cod), faceți-o și plasați-o undeva după sarcina „Build solution **/*.sln” (Construirea soluției **/*.sln).

Salvați și puneți în coadă și apoi verificați serverul sonarqube pentru a vedea dacă excluderile au funcționat.

Vince D

Puteți face același lucru cu build.gradle

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

Și dacă doriți să excludeți mai multe fișiere/directoare atunci:

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

Dinesh Muciliath Jayadevan

Acest lucru a funcționat pentru mine:

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

Exclude orice fișiere .js și .css din oricare dintre subdirectoarele unui dosar „wwwroot” care apare ca unul dintre subdirectoarele dosarului „src” (rădăcina proiectului).

Comentarii

  • Acest lucru nu pare a fi substanțial diferit de alte răspunsuri. Folosește wildcards cu două stele, la fel ca multe alte răspunsuri. Nu se potrivește cu ceea ce întrebarea încerca să excludă. –  > Por Stephen Ostermiller.