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

user1982350
источник
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> 
user07
источник
1

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

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

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

GrayDwarf
источник
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» (корень проекта).

Динеш Мусилиат Джаядеван
источник
Кажется, это не сильно отличается от других ответов. Он использует двойные звездочки подстановочные знаки, как и многие другие ответы. Это не соответствует тому, что пытался исключить вопрос.
Стивен Остермиллер