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.


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

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

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.


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>


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.


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.


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> 

1

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

To zadziałało w kanciastym projekcie


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


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.


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

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.