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?
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*/**
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>