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

Я пытаюсь исключить каталог из анализа 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 не анализировать тестовый каталог и любые пакеты внутри него.

16 ответов

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

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

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

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

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

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

Это будет работать для вашего случая:

sonar.exclusion =**/src/java/dig/ **, **/src/java/test/dig/ **

Если мы хотим пропустить всю папку, можно использовать следующее: sonar.exclusion =folderName/**/* И если у нас есть только один конкретный файл, просто укажите полный путь.

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

Пробовал это. Работает для меня!

Другой вариант конфигурации - добавление свойств 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>

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

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

Какую версию сонара вы используете? Есть одна опция под названием "sonar.skippedModules = yourmodulename".

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

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

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

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

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

Я ввел с учетом регистра и использовал "", и это сработало. Время анализа уменьшено с 10 до 3 минут.

      # Additional properties that will be passed to the scanner, 
# Put one key=value per line, example:
sonar.exclusions=**\Scripts\**\*,**\Content\**\*

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

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

Вы можете пропустить такую ​​библиотеку

      project(":libABC") {
    apply plugin: 'org.sonarqube'
    sonarqube {
        skipProject = true
    }
}

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

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

Добавьте эту строку в свой файл 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

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

Как это работает в Sonarqube сейчас

      -Dsonar.exclusions=Foodzy.Core/wwwroot/font-awesome/**

или в Дженкинсе

      /d:sonar.exclusions=Foodzy.Core/wwwroot/font-awesome/**

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

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

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

Другие вопросы по тегам