SonarQube Scanner execution fails: java can't be indexed twice

元气小坏坏 提交于 2019-12-11 17:07:17

问题


I am working with:

  • sonarqube 7.3
  • scanner 3.2.0.1227

I have a Gradle multi module

sonarqube-03
   sonarqube-03-domain
   sonarqube-03-repository
   sonarqube-03-repository-impl

I have just one sonar-project.properties file located in the root project sonarqube-03 with the following content:

# must be unique in a given SonarQube instance
sonar.projectKey=manolito-labs:sonarqube-03
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=sonarqube-03
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=src
sonar.tests=src

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

#Manolito
sonar.exclusions=build/**,\
                 bin/**,\
                 gradle/**,\
                 gradlew,\
                 gradlew.bat,\
                 *.gradle
sonar.java.binaries=.

#Multi-Module
sonar.modules=sonarqube-03-domain,\
              sonarqube-03-repository,\
              sonarqube-03-repository-impl

# Properties can obviously be overriden for
# each module - just prefix them with the module ID
sonarqube-03-domain.sonar.projectName=Module Sonarqube 03 Domain
sonarqube-03-repository.sonar.projectName=Module Sonarqube 03 Repository
sonarqube-03-repository-impl.sonar.projectName=Module Sonarqube 03 Repository Impl

When I execute on Mac: $SONARQUBE_SCANNER/bin/sonar-scanner

I got in the final of the all the output:

...
INFO: Source paths: src
INFO: Test paths: src
INFO: Source encoding: UTF-8, default locale: en_US
INFO: Load server rules
INFO: Load server rules (done) | time=162ms
INFO: Index files
INFO: Excluded sources:
INFO:   build/**
INFO:   bin/**
INFO:   gradle/**
INFO:   gradlew
INFO:   gradlew.bat
INFO:   *.gradle
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 11.684s
INFO: Final Memory: 11M/167M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarQube Scanner execution
ERROR: File sonarqube-03-repository/src/main/java/com/manuel/jordan/repository/PersonRepository.java can't be indexed twice. Please check that inclusion/exclusion patterns produce disjoint sets for main and test files
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.

If I execute with the debug mode ($SONARQUBE_SCANNER/bin/sonar-scanner -X)

I got:

...
13:31:07.362 INFO: Source paths: src
13:31:07.363 INFO: Test paths: src
13:31:07.363 INFO: Source encoding: UTF-8, default locale: en_US
13:31:07.370 INFO: Load server rules
13:31:07.480 DEBUG: GET 200 http://localhost:9000/api/rules/list.protobuf | time=109ms
13:31:07.510 INFO: Load server rules (done) | time=140ms
13:31:07.663 DEBUG: Declared extensions of language Python were converted to sonar.lang.patterns.py : **/*.py
13:31:07.663 DEBUG: Declared extensions of language CSS were converted to sonar.lang.patterns.css : **/*.css,**/*.less,**/*.scss
13:31:07.664 DEBUG: Declared extensions of language Go were converted to sonar.lang.patterns.go : **/*.go
13:31:07.664 DEBUG: Declared extensions of language Kotlin were converted to sonar.lang.patterns.kotlin : **/*.kt
13:31:07.664 DEBUG: Declared extensions of language JavaScript were converted to sonar.lang.patterns.js : **/*.js,**/*.jsx,**/*.vue
13:31:07.664 DEBUG: Declared extensions of language C# were converted to sonar.lang.patterns.cs : **/*.cs
13:31:07.664 DEBUG: Declared extensions of language Java were converted to sonar.lang.patterns.java : **/*.java,**/*.jav
13:31:07.665 DEBUG: Declared extensions of language Flex were converted to sonar.lang.patterns.flex : **/*.as
13:31:07.665 DEBUG: Declared extensions of language XML were converted to sonar.lang.patterns.xml : **/*.xml,**/*.xsd,**/*.xsl
13:31:07.665 DEBUG: Declared extensions of language PHP were converted to sonar.lang.patterns.php : **/*.php,**/*.php3,**/*.php4,**/*.php5,**/*.phtml,**/*.inc
13:31:07.666 DEBUG: Declared extensions of language TypeScript were converted to sonar.lang.patterns.ts : **/*.ts,**/*.tsx
13:31:07.680 INFO: Index files
13:31:07.683 INFO: Excluded sources:
13:31:07.684 INFO:   build/**
13:31:07.684 INFO:   bin/**
13:31:07.684 INFO:   gradle/**
13:31:07.684 INFO:   gradlew
13:31:07.684 INFO:   gradlew.bat
13:31:07.684 INFO:   *.gradle
13:31:07.702 DEBUG: 'src/main/java/com/manuel/jordan/repository/PersonRepository.java' indexed with language 'java'
13:31:07.779 INFO: ------------------------------------------------------------------------
13:31:07.779 INFO: EXECUTION FAILURE
13:31:07.779 INFO: ------------------------------------------------------------------------
13:31:07.779 INFO: Total time: 3.231s
13:31:07.846 INFO: Final Memory: 11M/167M
13:31:07.846 INFO: ------------------------------------------------------------------------
13:31:07.846 ERROR: Error during SonarQube Scanner execution
13:31:07.846 ERROR: File sonarqube-03-repository/src/main/java/com/manuel/jordan/repository/PersonRepository.java can't be indexed twice. Please check that inclusion/exclusion patterns produce disjoint sets for main and test files

For both outputs the problem is:

ERROR: File 
sonarqube-03-repository
/src/main/java
/com/manuel/jordan/repository/PersonRepository.java 
can't be indexed twice. 
Please check that inclusion/exclusion patterns produce disjoint sets for main and test files

Thus, what is missing in my current configuration?


回答1:


You incorrectly configured sources and tests:

sonar.sources=src
sonar.tests=src

They direct to the same directory. You can even read in the log:

Please check that inclusion/exclusion patterns produce disjoint sets for main and test files

You should specify sonar.tests only when tests classes are not in src directory.


If you still want to scan tests, then you have two options:

  1. Keep tests together with sources.
  2. Create a new project which store tests in src directory. This project should depend on original sources.

Finally, the feature which you need is unsupported right now, but there is a feature request (MMF-1451) - feel free to watch and vote.



来源:https://stackoverflow.com/questions/52633708/sonarqube-scanner-execution-fails-java-cant-be-indexed-twice

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!