Не может быть проиндексирован дважды - testSourceDirectory и sourceDirectory одинаковы

Я создал тест производительности как подмодуль maven для моего основного модуля. Все тестовые классы написаны в src /main/ java, а не в src /test/ java

Я могу упаковать проект в jar и запустить его для проверки производительности моего проекта.

Я хотел казнить mvn test, За mvn test на работу я должен был <testSourceDirectory> значение установлено. Так как в этом случае у меня есть мой код в src / main / java, я установил это:

<testSourceDirectory>src/main/java</testSourceDirectory>

Сейчас mvn test работает.

Но проблема в том, что сборка сонара завершается с ошибкой: can't be indexed twice, Что очевидно для моего пом testSourceDirectory а также sourceDirectory такие же.

[ERROR] Failed to execute goal 
org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) 
   on project Blah: File [relative=XYZ.java, abs=/Path/XYZ.java] can't be indexed twice. 
Please check that inclusion/exclusion patterns produce 
disjoint sets for main and test files -> 

Как исправить эту проблему?

2 ответа

Я столкнулся с той же проблемой. Наконец, решил это с помощью следующей документации:

https://github.com/SonarOpenCommunity/sonar-cxx/wiki/FAQ

Q: ОШИБКА: Причина: файл [...] не может быть проиндексирован дважды.

A: В случае ошибки ниже, вы должны проверить свои свойства исключения / включения. Убедитесь, что шаблоны включения / исключения создают несвязанные наборы для исходных и тестовых файлов.

ОШИБКА: Причина: файл [...] не может быть проиндексирован дважды. Убедитесь, что шаблоны включения / исключения создают несвязанные наборы для основных и тестовых файлов. Пример может выглядеть следующим образом:

sonar.sources=.
sonar.tests=.
sonar.test.inclusions=**/*Test*/**
sonar.exclusions=**/*Test*/**

Это не стандартное использование Maven, но вы можете легко исправить анализ SonarQube, используя исключения. sonar.exclusion =src/main/java/** или sonar.test.exclusion =src/main/java/**

в зависимости от того, хотите ли вы, чтобы ваши исходные файлы рассматривались как тесты или основные файлы.

Но правильным способом Maven было бы поместить ваши тесты в src/test/java и проверить их: https://maven.apache.org/guides/mini/guide-attached-tests.html

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

<properties>
    <sonar.sources>src/main/foo</sonar.sources>
    <sonar.tests>src/test/bar</sonar.tests>
</properties>

Я видел это can't be indexed twice ошибка при запуске sonarqubeЗадача Gradle в проекте Android. Проблема, связанная с файлами, хранящимися в app/src/debug/assets.

Я пробовал установить sonar.sources и sonar.tests свойства использовать несвязанные наборы, но мне не удалось устранить ошибку.

Чтобы исправить ошибку, я изменил:

property "sonar.coverage.exclusions", "**/assets/**, ..."

кому:

property "sonar.exclusions", "**/assets/**, ..."

чтобы полностью игнорировать каталог /assets/.

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