Исключения каталога SonarQube Проблема с компонентом vNext

У меня возникли трудности с исключениями в 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, работают отлично, но если я хочу начать исключать файлы из определенных каталогов, я ничего не могу заставить работать.

Я чувствую, что мне не хватает чего-то действительно основного, но я просто не могу понять это. Я пытался решить эту проблему некоторое время, когда у меня было время, но я не добился никакого прогресса. Если бы кто-нибудь мог дать какое-либо представление, я был бы очень признателен. Если вам нужна дополнительная информация, дайте мне знать.


person Kyle Robertson    schedule 03.11.2016    source источник


Ответы (1)


В интерфейсе SonarQube посмотрите на один из файлов, которые вы хотите исключить. Вверху вы увидите путь к файлу, как его понимает SonarQube. Именно этот путь вы хотите использовать при вводе исключений через пользовательский интерфейс, а не в настройках анализа.

Из-за структуры свойств исключения их очень и очень сложно правильно настроить в свойствах анализа. Вот почему это не задокументировано.

Вместо этого вам следует вводить исключения через пользовательский интерфейс.

person G. Ann - SonarSource Team    schedule 03.11.2016
comment
Это сработало! Я знал, что это будет что-то основное. Большое спасибо! Такого рода возникает другой вопрос, но он может потребовать совершенно другой темы. Как именно Sonar определяет путь к файлу? Причина, по которой я спрашиваю, заключается в том, что путь, который он показывает в пользовательском интерфейсе, не совсем соответствует тому, что находится на сервере. Похоже, что он может постоянно менять рабочий каталог при анализе и определении пути к файлу из этого места? Извините, если это глупый вопрос. Я как бы унаследовал этот инструмент, поэтому я пытаюсь узнать о нем больше. - person Kyle Robertson; 04.11.2016
comment
Это, конечно, отдельный вопрос :-) - person G. Ann - SonarSource Team; 04.11.2016