Проблема о том, как правильно включить / исключить источники для SonarQube в многомодульном проекте - PullRequest
0 голосов
/ 02 июля 2019

У нас есть проекты с такой структурой (корневой модуль и 2 подмодуля):

  • локальный-модуль
  • Осуществление-модуль pom.xml

По умолчанию сонар использует следующие источники:

<sonar.sources>pom.xml,src/main,src/test</sonar.sources>

Мы хотим проанализировать файлы YML или другие файлы в других местах.

Но после попытки различной конфигурации в соответствии с https://docs.sonarqube.org/latest/project-administration/narrowing-the-focus/

Вот этот:

    <sonar.sources>.</sonar.sources>
    <sonar.tests>src/test/java</sonar.tests>
    <sonar.test.inclusions>src/test/java</sonar.test.inclusions>
    <sonar.exclusions>src/test/java</sonar.exclusions>

выдает следующую ошибку:

[main] ERROR org.apache.maven.cli.MavenCli - Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar (default-cli) on project sample: null: MojoExecutionException: NullPointerException

и этот:

<sonar.sources>.</sonar.sources>
<sonar.test.exclusions>src/test/java</sonar.test.exclusions>

производит:

[main] ERROR org.apache.maven.cli.MavenCli - Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar (default-cli) on project pew-fwk-sample: File sample-impl/src/test/java/com/xxx/sample/FeaturesTest.java can't be indexed twice. Please check that inclusion/exclusion patterns produce disjoint sets for main and test files -> [Help 1]

У вас есть идеи по поводу решений?

1 Ответ

0 голосов
/ 02 июля 2019

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

# Exclude all classes ending by "Bean"
# Matches org/sonar.api/MyBean.java, org/sonar/util/MyOtherBean.java, org/sonar/util/MyDTO.java, etc.
sonar.exclusions=**/*Bean.java,**/*DTO.java

# Exclude all classes in the "src/main/java/org/sonar" directory
# Matches src/main/java/org/sonar/MyClass.java, src/main/java/org/sonar/MyOtherClass.java
# But does not match src/main/java/org/sonar/util/MyClassUtil.java
sonar.exclusions=src/main/java/org/sonar/*

# Exclude all COBOL programs in the "bank" directory and its sub-directories
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl, bank/data/REM012345.cob
sonar.exclusions=bank/**/*

# Exclude all COBOL programs in the "bank" directory and its sub-directories whose extension is .cbl
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl
sonar.exclusions=bank/**/*.cbl

Так что-то вроде <sonar.exclusions>src/main/java/**/*</sonar.exclusions> должно исключать все источники. Выше приведен пример для исключения только классов Dto. Обычно исключений достаточно, чтобы сузить фокус. Но включает в себя работу так же, если вы хотите пойти по этому пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...