SonarQube Исключить каталог


134

Я пытаюсь исключить каталог из анализа Sonar. В моем sonar-project.propertiesфайле определены следующие свойства :

sonar.sources=src/java
sonar.exclusions=src/java/test/****/*.java

У меня есть структура каталогов:

src/java/dig
src/java/test/dig

Когда я запускаю сонар-бегун, я получаю следующую информацию:

 INFO  - Excluded sources:
 INFO  -   src/java/test/**/*.java
 INFO  - Excluded tests:
 INFO  -   **/package-info.java

Но когда я проверяю результат анализа, все пакеты внутри тестового каталога все еще там.

Мне просто нужно сказать Sonar, чтобы он не анализировал тестовый каталог и любые пакеты внутри него.


3
Я нашел решение: sonar.exclusions = test / ** / *. Java
user1982350

Но если вы хотите избежать анализа тестов, вы можете попробовать использовать, например, пакет mvn clean -DskipTests
Эдду Мелендес

Ответы:


123

Попробуйте что-то вроде этого:

sonar.exclusions=src/java/test/**

4
Обязательно используйте шаблон Ant fileglob для подстановочных знаков. Вот хорошее объяснение: stackoverflow.com/a/86915/748524
Стефан

Вот определение параметров командной строки docs.sonarqube.org/display/SONAR/…
N0dGrand87

6
Всем, кто это видит, убедитесь, что у вас src/test/javaвместо src/java/test/.
Faraz 03

Как исключить методы в c #
природа ветри

Важно отметить, что это не рассматривается как регулярное выражение и применяется sonar.exclusions=node_modules/**ко всему вашему проекту , НЕ будет исключать вложенные папки node_modules, которые вам нужно будет сделать, sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**чтобы явно исключить их,
Кристиан Бартрам,

71

Я могу исключить несколько каталогов, используя конфигурацию ниже (пути к папкам, разделенные запятыми):

sonar.exclusions=system/**, test/**, application/third_party/**, application/logs/**

А при запуске эхолота в журнале появилось следующее:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**

18
Я тоже получаю исключенное сообщение, но файлы все равно анализируются.
Себас

в параметрах Teamcity я использовал ваш совет, но вставил -D перед (-Dsonar.exclu ...). Работает здесь. :-)
Maciel Bombonato

Как здесь исключить из проверки все файлы * .html? Пробовал, sonar.exclusions=**/bin/**,*.htmlно при сканировании по-прежнему используются файлы HTML. Все файлы Html - это подпапки в нескольких местах, и добавление здесь уровня подпапок с фактической картой путей потребует больше работы. Есть ли способ исключить из сканирования все * .specific_file_type?
Эламуруган


14

Если мы хотим пропустить всю папку, можно использовать следующее:

sonar.exclusions=folderName/**/*

А если у нас есть только один конкретный файл, просто укажите полный путь.

Вся папка, которую нужно исключить и добавить сюда.


2
В чем разница между этим ответом и sonar.exclusions=folderNameи sonar.exclusions=folderName/**? Спасибо
payne

* - Соответствует нулю или большему количеству символов ** - Соответствует нулю или большему количеству каталогов? - Матч с одним персонажем
Кирти Бандара

13

Другой вариант конфигурации - добавление свойств maven sonar.exclusions. Ниже приведен образец pom-файла с исключениями статического каталога jquery и каталога статического средства просмотра 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>


7

Самый простой способ - перейти по URL-адресу сервера после запуска сервера (localhost: 8080), затем войти в систему как администратор, перейти к настройкам> Исключения> Исключения исходного файла - добавьте сюда свои пакеты. Перезагрузите сервер.


2

какую версию сонара вы используете? Есть один вариант, который называется sonar.skippedModules = yourmodulename. ».

Это пропустит весь модуль. Так что знайте об этом.


13
ПРЕДУПРЕЖДЕНИЕ - свойство sonar.skippedModules устарело с версии 4.3 и больше не должно использоваться.
Чжэн Кай

1

Просто отметим, что после того, как вы исключили файлы из Sonar, сделайте то же самое для плагина Jacoco:

<configuration>
<excludes>     
<exclude>com/acme/model/persistence/entity/TransactionEntity*</exclude>
<exclude>com/acme/model/persistence/ModelConstants.class</exclude>
</excludes>
</configuration> 

1

Добавить пути к папкам, разделенные запятыми sonar.exclusions=**/abc/**,**/def/**

Это работало в угловом проекте


1

Если вы пользователь Azure DevOps и ищете, где и как исключить файлы и папки, вот вам:

  1. Отредактируйте свою воронку
  2. Убедитесь, что у вас добавлена ​​задача «Подготовить анализ в SonarQube». Если вам нужна помощь в настройке, вам нужно будет поискать в другом месте. Предложение: используйте редактор конвейера пользовательского интерфейса, а не редактор yaml, если вам не хватает ссылки управления. В настоящее время нет возможности конвертировать в UI из yaml. Просто воссоздайте конвейер. Если вы используете git, вы можете удалить yaml из корня вашего репо.
  3. В разделе «Дополнительно» задачи «Подготовка анализа в SonarQube» вы можете добавить исключения. См. Советы других для конкретных форматов исключения.

Пример:

# Additional properties that will be passed to the scanner, 
# Put one key=value per line, example:
# sonar.exclusions=**/*.bin
sonar.exclusions=MyProjectName/MyWebContentFolder/**

Примечание. Если вы не уверены на правильном пути, вы можете войти в sonarqube, просмотреть свой проект, просмотреть все или новые «Запахи кода», и нужный вам путь указан над каждой группой проблем. Вы можете получить полный путь к файлу или использовать дикие символы, подобные этим примерам:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

Если у вас не добавлена ​​задача «Выполнить анализ кода», сделайте это и поместите ее где-нибудь после задачи «Построить решение ** / *. Sln».

Сохраните и поставьте в очередь, а затем проверьте свой сервер sonarqube, чтобы увидеть, сработали ли исключения.


0

добавьте эту строку в свой файл sonar-project.properties

ex: sonar.exclusions = src / *. java будьте осторожны, если вы хотите исключить папку, а внутри папки есть файл, вы должны сначала исключить файлы или добавить файлы один за другим, например, представьте, что есть папка, как показано ниже :

src/app.java src/controllers/home.java src/services/test.java

вы должны сделать это: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Это сработало для меня


0

Вы можете сделать то же самое с build.gradle

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java"
  }
}

И если вы хотите исключить больше файлов / каталогов, тогда:

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}

-1

Это сработало для меня:

sonar.exclusions=src/**/wwwroot/**/*.js,src/**/wwwroot/**/*.css

Он исключает любые файлы .js и .css в любом из подкаталогов папки «wwwroot», являющиеся одним из подкаталогов папки «src» (корень проекта).


Кажется, это не сильно отличается от других ответов. Он использует двойные звездочки подстановочные знаки, как и многие другие ответы. Это не соответствует тому, что пытался исключить вопрос.
Стивен Остермиллер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.