SonarQube Kecualikan direktori

132

Saya mencoba mengecualikan direktori agar tidak dianalisis oleh Sonar. Saya memiliki properti berikut yang didefinisikan dalam sonar-project.propertiesfile saya :

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

Struktur direktori yang saya miliki adalah:

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

Ketika saya menjalankan sonar-runner saya mendapatkan info berikut:

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

Tetapi ketika saya memeriksa hasil analisis, semua paket di dalam direktori tes masih ada.

Saya hanya perlu memberitahu Sonar untuk tidak menganalisis direktori tes dan paket apa pun di dalamnya.

pengguna1982350
sumber
3
Saya menemukan solusinya: sonar.exclusions = test / ** / *. Java
user1982350
Tetapi jika Anda ingin menghindari analisis uji, Anda dapat mencoba menggunakan misalnya paket mvn clean -DskipTests
Eddú Meléndez

Jawaban:

120

Coba sesuatu seperti ini:

sonar.exclusions=src/java/test/**
Juan Hernandez
sumber
4
Yakinkan untuk menggunakan pola Ant fileglob untuk wildcard. Berikut adalah penjelasan yang bagus: stackoverflow.com/a/86915/748524
Stephan
Berikut ini adalah definisi opsi baris perintah docs.sonarqube.org/display/SONAR/…
N0dGrand87
4
Siapapun yang melihat ini, pastikan Anda memiliki src/test/javabukan src/java/test/.
Faraz
Bagaimana mengecualikan metode dalam c #
nature vetri
Penting untuk dicatat bahwa ini tidak diperlakukan sebagai ekspresi reguler dan diterapkan di seluruh proyek Anda sonar.exclusions=node_modules/**TIDAK akan mengecualikan folder node_modules bersarang yang perlu Anda lakukan sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**untuk secara eksplisit mengecualikannya
Christian Bartram
68

Saya dapat mengecualikan beberapa direktori menggunakan konfigurasi di bawah ini (jalur folder yang dipisahkan koma):

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

Dan saat menjalankan pelari sonar saya mendapat yang berikut di log:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**
Damodaran
sumber
18
Saya mendapatkan pesan yang dikecualikan juga, tetapi file masih dianalisis.
Sebas
dalam parameter Teamcity saya menggunakan tip Anda, tetapi memasukkan -D sebelum (-Dsonar.exclu ...). Bekerja disini. :-)
Maciel Bombonato
Bagaimana cara mengecualikan semua file * .html dari pemindaian di sini? Mencoba ini sonar.exclusions=**/bin/**,*.htmltetapi masih membutuhkan file html juga dalam pemindaian. File html adalah semua sub folder di beberapa tempat dan menambahkan di sub folder level di sini dengan peta jalur aktual akan lebih berfungsi. Apakah ada cara kita dapat mengecualikan semua * .specific_file_type agar tidak dipindai?
Elamurugan
13

Jika kita ingin melewatkan seluruh folder berikut ini dapat digunakan:

sonar.exclusions=folderName/**/*

Dan jika kita hanya memiliki satu file tertentu cukup berikan path lengkap.

Semua folder yang perlu dikecualikan dan ditambahkan di sini.

Shradha Modi
sumber
2
Apa perbedaan antara jawaban itu dan sonar.exclusions=folderNamedan sonar.exclusions=folderName/**? Terima kasih
bayar
* - Sesuaikan nol atau lebih karakter ** - Sesuaikan nol atau lebih direktori? - Cocokkan satu karakter
Keerthi Bandara
12

Opsi konfigurasi lain adalah menambahkan properti maven sonar.exclusions. Di bawah ini adalah contoh file pom dengan pengecualian direktori jquery statis dan direktori pdf viewer statis.

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

Akin Okegbile
sumber
7

Cara termudah adalah pergi ke URL server setelah memulai server (localhost: 8080) kemudian masuk sebagai admin, Buka pengaturan> Pengecualian> Sumber File Pengecualian - Tambahkan paket Anda di sini. Mulai ulang server.

Maverick
sumber
2

versi sonar apa yang Anda gunakan? Ada satu opsi yang disebut " sonar.skippedModules = yourmodulename ".

Ini akan melewati seluruh modul. Jadi sadarilah itu.

Nol
sumber
12
PERINGATAN - properti 'sonar.skippedModules' sudah usang sejak versi 4.3 dan tidak boleh digunakan lagi.
Zheng Kai
1

Hanya untuk menyebutkan bahwa setelah Anda mengecualikan file dari Sonar, lakukan hal yang sama untuk plugin Jacoco:

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

Tambahkan jalur folder yang dipisah koma sonar.exclusions=**/abc/**,**/def/**

Ini bekerja di proyek sudut

dasunse
sumber
1

Jika Anda pengguna Azure DevOps yang mencari di mana dan bagaimana mengecualikan file dan folder, ini dia:

  1. Edit pipa Anda
  2. Pastikan Anda memiliki tugas "Siapkan analisis tentang SonarQube". Anda harus mencari di tempat lain jika Anda memerlukan bantuan untuk mengonfigurasinya. Saran: Gunakan editor pipa UI vs editor yaml jika Anda kehilangan tautan kelola. Saat ini, tidak ada cara untuk mengkonversi ke UI dari yaml. Buat ulang pipa. Jika menggunakan git, Anda dapat menghapus yaml dari root repo Anda.
  3. Di bawah bagian 'Advanced' dari tugas "Siapkan analisis pada SonarQube", Anda dapat menambahkan pengecualian. Lihat saran yang diberikan oleh orang lain untuk format pengecualian tertentu.

Contoh:

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

Catatan: Jika Anda tidak yakin tentang jalur, Anda dapat masuk ke sonarqube, melihat proyek Anda, melihat semua atau 'Kode Bau' baru dan jalur yang Anda butuhkan tercantum di atas setiap pengelompokan masalah. Anda bisa mengambil path lengkap ke file atau menggunakan wild seperti contoh berikut:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

Jika Anda tidak memiliki tugas 'Jalankan Analisis Kode', lakukan dan letakkan di suatu tempat setelah tugas 'Bangun solusi ** / *. Sln'.

Simpan dan Antri lalu periksa server sonarqube Anda untuk melihat apakah pengecualian berfungsi.

GrayDwarf
sumber
0

tambahkan baris ini ke file sonar-project.properties Anda

ex: sonar.exclusions = src / *. java hati-hati jika Anda ingin mengecualikan folder dan di dalam folder ada file Anda harus terlebih dahulu mengecualikan file atau menambahkan file satu per satu misalnya misalnya bayangkan ada folder seperti di bawah ini :

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

Anda harus melakukan ini: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Ini berhasil untuk saya

mohammad pakivand
sumber
0

Anda dapat melakukan hal yang sama dengannya build.gradle

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

Dan jika Anda ingin mengecualikan lebih banyak file / direktori maka:

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}
Vince D
sumber
-1

Ini bekerja untuk saya:

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

Ini mengecualikan semua file .js dan .css di bawah salah satu sub direktori dari folder "wwwroot" yang muncul sebagai salah satu sub direktori dari folder "src" (project root).

Dinesh Muciliath Jayadevan
sumber
Ini sepertinya tidak jauh berbeda dari jawaban lainnya. Ini menggunakan wildcard bintang ganda seperti banyak jawaban lainnya. Itu tidak cocok dengan apa yang coba disingkirkan oleh pertanyaan itu.
Stephen Ostermiller