2016-06-09 15 views
7

Próbuję wykluczyć niektóre generowany automatycznie kod (Odnośniki serwisowe) z kodu statycznego sonarów i analizy zasięgu testu jednostkowego. Projektem jest C# .Net, a Sonar działa przez Jenkins na serwerze Windows.Jak wykluczyć pliki ze spacjami w ścieżce w sonarze?

W moim pliku sonar-project.properties mogę wykluczyć różne inne pliki i katalogi za pomocą właściwości sonar.exclusions, ale to nie działa dla plików, które mają spację w ścieżce.

W powyższym przykładzie pliki Global.asax.cs są wykluczone we wszystkich projektach w ramach rozwiązania, ale odwołania do usług nie są.

Próbowałem załączając ścieżkę w pojedynczym i podwójnym cudzysłowie. Próbowałem użyć odwrotnego ukośnika, aby uciec z przestrzeni. Próbowałem umieścić ścieżkę jako **/MyProject/Service */*, aby skorzystać z symbolu wieloznacznego (może być ryzykowne), ale to też nie działa.

Czy ktoś ma rozwiązanie tego problemu?

+0

Czy możliwe jest ustawienie wartości podwójnych cudzysłowów? Coś w rodzaju '//MyProject/Service References" ' – DavidG

Odpowiedz

5

Po prostu wpadłem na ten sam problem. Musiałem wykluczyć pliki javascript w projekcie "Mój projekt" w skrypcie folderu. Próbowałem ten pierwszy:

**/Scripts/**/*.js 

I to działało w porządku, ale zdałem sobie sprawę, że to wyklucza „Scripts” folder w innych projektach zbyt. Więc zmieniłem to na:

**/My Project/Scripts/**/*.js 

I przestał działać. Moim pierwszym instynktem było obarczenie winą miejsca w nazwie projektu. Próbowałem więc tego samego, co zrobiłeś:

"**/My Project/Scripts/**/*.js" 
'**/My Project/Scripts/**/*.js' 
**/My\ Project/Scripts/**/*.js 

ale nic z tego nie zadziałało.

Wtedy natknąłem się na tym forum: sonarqube-archive.15.x6.nabble.com/Project-exclusions-for-Code-Coverage-not-working-C-td5023058.html

Szczególnie linia ta dostarczyła odpowiedź: Modules (projekty Net) nie są częścią pełnej nazwy. Musisz zdefiniować wykluczenia na poziomie modułu (projekt .Net).

Oznacza to, że mój błąd polegał na braku miejsca w nazwie projektu, ale w ogóle na nazwie projektu! Zmieniłem filtr na:

Scripts/**/*.js 

i voila, pliki zostały poprawnie wykluczone. Brak konieczności cytowania lub ucieczki.

Oczywiście nadal pozostaje problem, że folder "Skrypty" w innym projekcie również zostaną wykluczone. Informacje podane tutaj: docs.sonarqube.org/display/SCAN/Excluding+Artifacts+from+the+Analysis mogą okazać się przydatne.

Używam interfejsu internetowego, a nie pliku konfiguracyjnego bezpośrednio, ale sugerowałoby to również, że jeśli masz wiele filtrów, lista rozdzielona przecinkami nie powinna zawierać spacji (innych niż te znajdujące się w ścieżce), ponieważ interpretowane są dosłownie.

+0

To nie działa dla mnie. Próbowałem sonar.exclusions = Service References/*. Cs jak sugerujesz oraz sonar.skippedModules = Service References/*.cs, o czym mowa w kontekście Twojej odpowiedzi, ale nie spowodowało wykluczenia odniesień do usług w analizie. Czy mógłbyś wyjaśnić swoją odpowiedź? –

+0

To źle. Jakie typy plików chcesz wykluczyć w folderze Odnośniki serwisowe? Moje rozwiązanie wyklucza tylko pliki .cs w folderze Odnośniki serwisowe. Jeśli chcesz wykluczyć wszystkie pliki, które chcesz użyć sonar.exclusions = Referencje usługi/** – PeterH

+0

Jeśli to ci pomoże, zaktualizuję moją odpowiedź – PeterH