web-dev-qa-db-fra.com

ne peut pas être indexé deux fois - testSourceDirectory et sourceDirectory sont identiques

J'ai créé un test de performance en tant que sous-module maven sur mon module principal. Toutes les classes de test sont écrites sous src/main/Java et non src/test/Java

Je peux empaqueter le projet sous forme de pot et l'exécuter pour tester les performances de mon projet.

Je voulais exécuter mvn test. Pour mvn test pour travailler j'aurais dû <testSourceDirectory> ensemble de valeurs. Comme dans ce cas, j'ai mon code dans src/main/Java, je l'ai défini comme suit:

<testSourceDirectory>src/main/Java</testSourceDirectory>

Maintenant mvn test travaux.

Mais le problème est que la construction du sonar échoue avec une erreur de plainte: can't be indexed twice. Ce qui est évident car mes pom testSourceDirectory et sourceDirectory sont les mêmes.

[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 -> 

Comment résoudre ce problème?

17
Amod Pandey

J'étais confronté au même problème. Enfin, résolu à l'aide de la documentation ci-dessous: -

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

Q: ERREUR: causée par: le fichier [...] ne peut pas être indexé deux fois.

R: En cas d'erreur ci-dessous, vous devez vérifier vos propriétés d'exclusion/inclusion. Veuillez vérifier que les modèles d'inclusion/exclusion produisent des ensembles disjoints pour les fichiers source et de test

ERREUR: causée par: le fichier [...] ne peut pas être indexé deux fois. Veuillez vérifier que les modèles d'inclusion/exclusion produisent des ensembles disjoints pour les fichiers principaux et de test Un exemple pourrait ressembler à ceci:

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

Ce n'est pas une utilisation standard de Maven, mais vous pouvez facilement corriger l'analyse SonarQube à l'aide d'exclusions. sonar.exclusions = src/main/Java/** ou sonar.test.exclusions = src/main/Java/**

selon que vous souhaitez que vos fichiers source soient considérés comme des tests ou des fichiers principaux.

Mais la bonne façon Maven serait de mettre vos tests dans src/test/Java et d'ackage vos tests: https://maven.Apache.org/guides/mini/guide-attached-tests.html

Si le projet ne suit pas la structure de répertoire Maven par défaut, dans le pom du projet, vous pouvez spécifier explicitement où se trouve la partie du code source et la partie des tests:

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