Гидролокатор игнорирует исключения - PullRequest
1 голос
/ 24 октября 2019

У меня есть проект на C #, который также включает som тестовый пользовательский интерфейс, который не должен быть исследован SonarCube, (SonarCube вызывается teamcity)

Я хотел бы, чтобы следующие папки и весь контент игнорировались SonarCube

  • . \ Src \ ExamplePredictionCascadingResourceProvider (должно игнорироваться локальным правилом)
  • . \ Src \ TestPredictionCascadingGUI (должно игнорироваться локальным правилом)
  • . \ Src\ VM.PredictionCascade.Tests (должно игнорироваться глобальным правилом ** / Tests / .cs)

Я добавил первую папку в пользовательском интерфейсе для локального проекта sonarcubeв sonar.exclusion, но все еще есть проблемы с исходным кодом в этой папке.

В SonarQubeAnalysisConfig.xml кажется, что значение в конечном итоге отлично

  • ** / ExamplePredictionCascadingResourceProvider / ** / * Local example file that should be ignored

помимо исключения проекта существуют следующие глобальные исключения

  • ** / бен / x64 / / bin / x86 / / пакеты / / объект / x64 / / объект/x86/,/src//bin/,/src//obj/,/AssemblyInfoAppend.cs,**/AssemblyInfo.cs
  • ** / Тест / .cs, ** / Тесты / .cs example that should be ignored global exlusion rule

для другихпроецирует то же значение «sonar.global.test.exclusion», похоже, работает

, поэтому я весьма озадачен и не знаю, с чего начать, чтобы выяснить, почему файлы включены ... Может ли этоМожет быть потому, что я изменил «исключения» после создания проекта, а затем sonarcube запомнил предыдущие проблемы?

Есть какие-нибудь намеки на то, что проблема или что исследовать?

1 Ответ

1 голос
/ 29 октября 2019

Изучив журнал сборки teamcity, я только что понял, что SonarQube применяет эти правила исключения, предполагая, что базовый каталог является каталогом для анализируемого проекта, а это означает, что не существует четкого способа исключения всех файлов в папке ExamplePredictionCascadingResourceProvider. ,Другими словами, когда SonarQube начинает анализировать файлы для проекта ExamplePredictionCascadingResourceProvider, он устанавливает базовый каталог в эту папку, и, следовательно, он не может сопоставлять никакие файлы с заданными шаблонами для исключения.

В качестве решения следует использовать шаблон, который соответствует всем именам файлов в папке ExamplePredictionCascadingResourceProvider. Предполагая, что все файлы в этой папке начинаются с «Example», достаточно добавить «Example * .cs» к правилам исключения.

Хороший вариант использования для установки правила исключения на сервере SonarQube, который применяется квсе проекты должны иметь "** / AssemblyInfo.cs", поскольку AssemblyInfo.cs существует для всех проектов c # в подпапке Properties в папке проекта.

Я также рекомендую взглянуть на ответ на SonarQube с плагином C # с MSBuild Runner не принимает исключения , если вы хотите указать правило исключения локально в вашем проекте, а не наСервер SonarQube (который имеет больше смысла для вашего конкретного сценария, поскольку это правило зависит от проекта).

...