SonarQube Bir dizini dışlama


133

Bir dizinin Sonar tarafından analiz edilmesini engellemeye çalışıyorum. Dosyamda aşağıdaki özellikleri tanımladım sonar-project.properties:

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

Sahip olduğum dizin yapısı:

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

Sonar çalıştırıcısını çalıştırdığımda şu bilgileri alıyorum:

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

Ama analizin sonucunu kontrol ettiğimde test dizini içindeki tüm paketler hala orada.

Sonar'a test dizinini ve içindeki paketleri analiz etmemesini söylemem gerekiyor.


3
Çözümü buldum: sonar.exclusions = test / ** / *. Java
user1982350

Ancak test analizinden kaçınmak istiyorsanız, örneğin mvn clean package -DskipTests
Eddú Meléndez

Yanıtlar:


123

Bunun gibi bir şey dene:

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

4
Joker karakterler için Ant fileglob desenini kullandığınızdan emin olun. İşte iyi bir açıklama: stackoverflow.com/a/86915/748524
Stephan

İşte komut satırı seçenekleri tanımı docs.sonarqube.org/display/SONAR/…
N0dGrand87

5
Bunu gören, src/test/javaonun yerine sahip olduğunuzdan emin olun src/java/test/.
Faraz

C # 'da yöntemler nasıl hariç
tutulur

Bu normal ifade olarak ele alınır ve tüm proje boyunca uygulanan olmadığını nota Onun önemli sonar.exclusions=node_modules/**yapmanız gereken klasörleri iç içe node_modules dışlamak ETMEYECEKTIR sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**için bunları açıkça hariç
Christian Bartram

69

Aşağıdaki yapılandırmayı (virgülle ayrılmış klasör yolları) kullanarak birden çok dizini hariç tutabiliyorum:

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

Ve sonar koşucusunu çalıştırırken, günlükte aşağıdakileri aldım:

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

18
Dışarıda bırakılan mesajı da alıyorum, ancak dosyalar hala analiz ediliyor.
Sebas

Teamcity parametrelerinde ipucunuzu kullandım, ancak öncesinde -D ekledim (-Dsonar.exclu ...). Burada çalışır. :-)
Maciel Bombonato

Tüm * .html dosyalarının burada taranması nasıl engellenir? sonar.exclusions=**/bin/**,*.htmlBunu denedim, ancak taramada da html dosyalarını alıyor. Html dosyalarının hepsi birkaç yerde alt klasörlerdir ve burada gerçek yol haritası ile alt klasör düzeyinde eklemek daha fazla iş olacaktır. * .Specific_file_type'ın taranmasını engellemenin bir yolu var mı?
Elamurugan


14

Tüm klasörü atlamak istersek aşağıdakiler kullanılabilir:

sonar.exclusions=folderName/**/*

Ve sadece belirli bir dosyamız varsa, tam yolu verin.

Dışarıda bırakılması ve buraya eklenmesi gereken tüm klasörler.


2
Bu cevap ve sonar.exclusions=folderNameve arasındaki fark nedir sonar.exclusions=folderName/**? Teşekkürler
payne

* - Sıfır veya daha fazla karakterle eşleşir ** - Sıfır veya daha fazla diziyle mi eşleşiyor? - Tek bir karakterle
eşleştir

13

Başka bir yapılandırma seçeneği, bir maven özellikleri eklemektir sonar.exclusions. Aşağıda, statik jquery dizini ve statik pdf görüntüleyici dizini hariç tutulan örnek bir pom dosyası bulunmaktadır.

<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

En kolay yol, sunucuyu başlattıktan sonra sunucu URL'sine gitmektir (localhost: 8080), ardından yönetici olarak oturum açın, Ayarlar'a gidin> Hariç Tutmalar> Kaynak Dosya Hariç Tutmaları - Paketlerinizi buraya ekleyin. Sunucuyu yeniden başlatın.


2

hangi sonar sürümünü kullanıyorsunuz? " Sonar.skippedModules = yourmodulename " adında bir seçenek vardır " .

Bu, tüm modülü atlayacaktır. Bu yüzden bunun farkında olun.


13
WARN - 'sonar.skippedModules' özelliği 4.3 sürümünden beri kullanımdan kaldırılmıştır ve artık kullanılmamalıdır.
Zheng Kai

1

Dosyaları Sonar'dan çıkardıktan sonra, Jacoco eklentisi için de aynısını yapın:

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

1

Virgülle ayrılmış klasör yolları ekleyin sonar.exclusions=**/abc/**,**/def/**

Bu, açısal bir projede çalıştı


1

Dosya ve klasörlerin hem nerede hem de nasıl hariç tutulacağını arayan bir Azure DevOps kullanıcısıysanız, işte:

  1. Ardışık düzeninizi düzenleyin
  2. "SonarQube üzerinde analiz hazırla" görevinin eklendiğinden emin olun. Bunu yapılandırmak için yardıma ihtiyacınız olursa başka bir yere bakmanız gerekecek. Öneri: Yönet bağlantısını bulamıyorsanız, UI ardışık düzen düzenleyicisine karşı yaml düzenleyicisini kullanın. Şu anda, yaml'den UI'ye dönüştürmenin bir yolu yoktur. Sadece boru hattını yeniden oluşturun. Git kullanıyorsanız, yaml'yi deponuzun kökünden silebilirsiniz.
  3. "SonarQube üzerinde analiz hazırla" görevinin "Gelişmiş" bölümü altında, istisnalar ekleyebilirsiniz. Belirli dışlama biçimleri için başkaları tarafından verilen tavsiyelere bakın.

Misal:

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

Not: Yolda emin değilseniz, sonarqube girebilir, projenizi görüntüleyebilir, tümüne veya yeni 'Kod Kokularına' bakabilirsiniz ve ihtiyacınız olan yol her sorun grubunun üzerinde listelenmiştir. Bir dosyanın tam yolunu alabilir veya aşağıdaki örnekler gibi jokerleri kullanabilirsiniz:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

'Kod Analizini Çalıştır' görevini eklemediyseniz, bunu yapın ve 'Çözüm oluştur ** / *. Sln' görevinden sonra bir yere yerleştirin.

Hariç tutmaların işe yarayıp yaramadığını görmek için kaydedin ve Sıraya alın ve ardından sonarqube sunucunuzu kontrol edin.


0

bu satırı sonar-project.properties dosyanıza ekleyin

örn: sonar.exclusions = src / *. java Bir klasörü dışlamak istiyorsanız dikkatli olun ve klasörün içinde bir dosya varsa, önce dosyaları dışlamanız veya dosyaları tek tek eklemeniz gerekir, örneğin aşağıdaki gibi bir klasör olduğunu düşünün :

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

bunu yapmak zorundasın: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Benim için çalıştı


0

İle aynı şeyi yapabilirsin build.gradle

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

Ve daha fazla dosya / dizini hariç tutmak istiyorsanız, o zaman:

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

-1

Bu benim için çalıştı:

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

"Src" klasörünün (proje kökü) alt dizinlerinden biri olarak görünen "wwwroot" klasörünün alt dizinlerinden herhangi birinin altındaki .js ve .css dosyalarını hariç tutar.


Bu, diğer cevaplardan önemli ölçüde farklı görünmüyor. Diğer birçok cevapta olduğu gibi çift yıldız joker karakterleri kullanır. Sorunun hariç tutmaya çalıştığı şeyle eşleşmiyor.
Stephen Ostermiller'ın
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.