У меня возникли трудности с исключениями в SonarQube. На самом деле я не видел, чтобы эта конкретная ситуация была опубликована здесь, и некоторые другие решения, предложенные в вопросах, связанных с исключением, не решили проблему. Любое понимание будет действительно оценено.
Я работал с инженером над фильтрацией файлов, которые SonarQube анализирует из их проекта во время сборки. Их решение создается с помощью сборки vNext, где TFS и сервер сборки размещаются локально. SonarQube также размещается локально. В сборке для анализа используются компоненты Sonar, включенные в vNext. Проект в основном C#.
Решение состоит в основном из проектов, эксклюзивных для этого решения, но есть несколько ссылок на проекты, которые полностью являются частью другого приложения. Из-за этого сопоставление рабочей области должно получать файлы из двух отдельных частей системы управления версиями. Кроме того, из-за того, как решение ищет проекты (на основе свойств самого файла решения), я должен определенным образом сопоставить файлы системы управления версиями. На высоком уровне рабочая область на сервере сборки выглядит примерно так:
В файле настроек сонара в качестве рабочего каталога указана исходная папка сборки.
Инженер хочет исключить из анализа файлы кода из определенных каталогов. Например, они хотят исключить все файлы cs из папки X в B.Srvc. Итак, каталог будет Build Source Directory/B/Source/B.Srvc/X. Основываясь на инструкциях по исключению, найденных на веб-сайте SonarQube, казалось, что мне просто нужно сделать что-то вроде этого:
sonar.exclusions=Build Source Directory/B/Source/B.Srvc/X/**/*.cs
Когда я это сделал, он все равно проанализировал файлы в этой папке. Я пробовал различные другие комбинации шаблонов, такие как:
sonar.exclusions=Build Source Directory/B/Source/B.Srvc/X/*.cs
sonar.exclusions=**/X/**/*.cs
sonar.exclusions=B/Source/B.Srvc/X/**/*.cs
sonar.exclusions=**/B/Source/B.Srvc/X/**/*.cs
Я даже пытался указать полный путь к каталогу (например, C:/agent/_work/25/src/...), но это тоже не сработало.
Очень широкие исключения, такие как **/* Имя *.cs, работают отлично, но если я хочу начать исключать файлы из определенных каталогов, я ничего не могу заставить работать.
Я чувствую, что мне не хватает чего-то действительно основного, но я просто не могу понять это. Я пытался решить эту проблему некоторое время, когда у меня было время, но я не добился никакого прогресса. Если бы кто-нибудь мог дать какое-либо представление, я был бы очень признателен. Если вам нужна дополнительная информация, дайте мне знать.