SonarQube Wyklucz katalog

140

Próbuję wykluczyć katalog z analizy przez Sonar. Mam następujące właściwości zdefiniowane w moim sonar-project.propertiespliku:

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

Struktura katalogów, którą mam, to:

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

Kiedy uruchamiam sonar-runner, otrzymuję następujące informacje:

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

Ale kiedy sprawdzam wynik analizy, wszystkie pakiety w katalogu testowym nadal tam są.

Muszę tylko powiedzieć Sonarowi, aby nie analizował katalogu testów i żadnych zawartych w nim pakietów.

user1982350
źródło
3
Znalazłem rozwiązanie: sonar.exclusion = test / ** / *. Java
user1982350
Ale jeśli chcesz uniknąć analiza testu można spróbować użyć na przykład mvn czystych -DskipTests pakietowych
Eddú Meléndez

Odpowiedzi:

128

Spróbuj czegoś takiego:

sonar.exclusions=src/java/test/**
Juan Hernandez
źródło
4
Upewnij się, że używasz wzorca Ant fileglob dla symboli wieloznacznych. Oto dobre wyjaśnienie: stackoverflow.com/a/86915/748524
Stephan
Oto definicja opcji wiersza poleceń docs.sonarqube.org/display/SONAR/ ...
N0dGrand87.
6
Każdy, kto to zobaczy, upewnij się, że src/test/javazamiast src/java/test/.
Faraz
Jak wykluczyć metody w C #
nature vetri
Ważne, aby pamiętać, że nie jest traktowany jako wyrażenie regularne i stosowane w całej całego projektu sonar.exclusions=node_modules/**nie będzie wykluczać zagnieżdżone node_modules foldery trzeba będzie zrobić sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**jawnie wykluczyć je
Christian Bartram
72

Jestem w stanie wykluczyć wiele katalogów za pomocą poniższej konfiguracji (ścieżki folderów oddzielone przecinkami):

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

A podczas uruchamiania sonaru w dzienniku otrzymałem następujące informacje:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**
Damodaran
źródło
21
Otrzymuję również wykluczoną wiadomość, ale pliki są nadal analizowane.
Sebas
w parametrach Teamcity użyłem twojej wskazówki, ale wstawiłem -D przed (-Dsonar.exclu ...). Działa tutaj. :-)
Maciel Bombonato
Jak wykluczyć tutaj wszystkie pliki * .html ze skanowania? Próbowałem, sonar.exclusions=**/bin/**,*.htmlale nadal skanuje pliki html. Pliki HTML to wszystkie podfoldery w kilku miejscach, a dodanie tutaj poziomu podfolderów z aktualną mapą ścieżki będzie bardziej pracochłonne. Czy istnieje sposób, aby wykluczyć wszystkie * .specific_file_type ze skanowania?
Elamurugan
14

Jeśli chcemy pominąć cały folder, można użyć:

sonar.exclusions=folderName/**/*

A jeśli mamy tylko jeden konkretny plik, podaj pełną ścieżkę.

Cały folder, który należy wykluczyć i dołączyć tutaj.

Shradha Modi
źródło
2
Jaka jest różnica między tą odpowiedzią i sonar.exclusions=folderNamei sonar.exclusions=folderName/**? Dzięki
payne
* - Dopasuj zero lub więcej znaków ** - Dopasuj zero lub więcej katalogów? - Dopasuj jedną postać
Keerthi Bandara
13

Inną opcją konfiguracji jest dodanie właściwości maven sonar.exclusions. Poniżej znajduje się przykładowy plik pom z wykluczeniami statycznego katalogu jquery i statycznego katalogu przeglądarki 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>

Akin Okegbile
źródło
6

Najłatwiej jest przejść do adresu URL serwera po uruchomieniu serwera (localhost: 8080), a następnie zalogować się jako administrator, przejdź do ustawień> Wykluczenia> Wykluczenia plików źródłowych - Dodaj swoje pakiety tutaj. Zrestartuj serwer.

Politycznie niezależny
źródło
3

jakiej wersji sonaru używasz? Jest jedna opcja o nazwie " sonar.skippedModules = nazwa twojego modułu ".

Spowoduje to pominięcie całego modułu. Więc bądź tego świadomy.

Szyfrować
źródło
13
WARN - właściwość „sonar.skippedModules” jest przestarzała od wersji 4.3 i nie powinna być już używana.
Zheng Kai
1

Wystarczy wspomnieć, że po wykluczeniu plików z Sonar zrób to samo dla wtyczki Jacoco:

<configuration>
<excludes>     
<exclude>com/acme/model/persistence/entity/TransactionEntity*</exclude>
<exclude>com/acme/model/persistence/ModelConstants.class</exclude>
</excludes>
</configuration> 
user07
źródło
1

Dodaj ścieżki folderów oddzielone przecinkami sonar.exclusions=**/abc/**,**/def/**

To zadziałało w kanciastym projekcie

dasunse
źródło
1

dodaj tę linię do swojego pliku sonar-project.properties

ex: sonar.exclusion = src / *. java uważaj, jeśli chcesz wykluczyć folder, aw folderze znajduje się plik, musisz najpierw wykluczyć pliki lub dodać pliki jeden po drugim, na przykład wyobraź sobie, że jest folder taki jak poniżej :

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

musisz to zrobić: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

U mnie to zadziałało

mohammad pakivand
źródło
1

Jeśli jesteś użytkownikiem usługi Azure DevOps i szukasz informacji o tym, gdzie i jak wykluczyć pliki i foldery, gotowe:

  1. Edytuj swój rurociąg
  2. Upewnij się, że dodano zadanie „Przygotuj analizę w SonarQube”. Jeśli potrzebujesz pomocy w konfiguracji, musisz poszukać gdzie indziej. Sugestia: użyj edytora potoku interfejsu użytkownika zamiast edytora yaml, jeśli brakuje linku zarządzania. Obecnie nie ma możliwości konwersji do interfejsu użytkownika z yaml. Po prostu odtwórz rurociąg. Jeśli używasz git, możesz usunąć yaml z katalogu głównego repozytorium.
  3. W sekcji „Zaawansowane” zadania „Przygotuj analizę w SonarQube” możesz dodać wykluczenia. Zobacz porady innych osób dotyczące określonych formatów wykluczeń.

Przykład:

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

Uwaga: Jeśli nie masz pewności co do ścieżki, możesz przejść do sonarqube, wyświetlić projekt, przejrzeć wszystkie lub nowe „zapachy kodu”, a potrzebna ścieżka jest wymieniona nad każdą grupą problemów. Możesz pobrać pełną ścieżkę do pliku lub użyć symboli wieloznacznych, takich jak te przykłady:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

Jeśli nie masz dodanego zadania „Uruchom analizę kodu”, zrób to i umieść je gdzieś po zadaniu „Build solution ** / *. Sln”.

Zapisz i ustaw w kolejce, a następnie sprawdź serwer sonarqube, aby sprawdzić, czy wykluczenia zadziałały.

GrayDwarf
źródło
0

Możesz zrobić to samo z build.gradle

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

A jeśli chcesz wykluczyć więcej plików / katalogów, to:

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}
Vince D.
źródło
-1

To zadziałało dla mnie:

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

Wyklucza wszelkie pliki .js i .css z podkatalogów folderu „wwwroot” występujących jako jeden z podkatalogów folderu „src” (katalog główny projektu).

Dinesh Muciliath Jayadevan
źródło
To nie wydaje się znacząco różnić od innych odpowiedzi. Używa symboli wieloznacznych z podwójną gwiazdką, podobnie jak wiele innych odpowiedzi. Nie pasuje do tego, co próbowano wykluczyć w pytaniu.
Stephen Ostermiller