Maven SonarQube Jacoco JUnit:SonarScanner遇到许多意想不到的问题
我有一个简单的项目,需要运行JUnit测试,让SonarQube用SonarScanner扫描/运行JUnit结果的测试。我把我的项目放在 存在一些问题:Maven SonarQube Jacoco JUnit:SonarScanner遇到许多意想不到的问题,maven,sonarqube,sonarqube-scan,Maven,Sonarqube,Sonarqube Scan,我有一个简单的项目,需要运行JUnit测试,让SonarQube用SonarScanner扫描/运行JUnit结果的测试。我把我的项目放在 存在一些问题: 警告:无法通过classloader声纳()访问类“XXX” 没有jacoco-it.exec和jacoco-ut.exec,只在Sonascanner上运行jacoco.exec 运行测试JUnit时无法排除某些文件,因为我只想在我的服务文件夹()中运行测试 这是我的sonar-project.properties: # Required
# Required metadata
sonar.projectKey=com.example:Sample
sonar.projectName=Java :: Example :: SonarQube Scanner
sonar.projectVersion=1.0
# Comma-separated paths to directories with sources (required)
sonar.sources=src
sonar.exclusions=src/main/resources/**
#sonar.test.inclusions=src/main/java/com/example/service/**, src/test/java/**
#sonar.test.exclusions=src/main/java/com/example/controller/**
# Encoding of the source files
sonar.sourceEncoding=UTF-8
#Jacoco
sonar.junit.reportsPath=target/surefire-reports
sonar.jacoco.reportPath =target/jacoco.exec
sonar.jacoco.reportMissing.force.zero=true
sonar.java.binaries=target/classes/**
#sonar.java.libraries=libs/**
当我运行Maven测试直到构建成功时,它会在文件夹Target中创建一些文件和文件夹
之后,我运行声纳扫描仪扫描我的项目,但我遇到了这些问题
我的问题:
很可能是不正确的-应该是sonar.sources
,并且将由Scanner for Maven正确配置,这就是为什么您将不需要的测试文件作为主文件进行分析的原因src/main/java
- 以及通常用于基于Maven项目的
src/test/java
为空,因此无法通过classloader sonar访问sonar.java.libraries
-可能很难列出Maven项目依赖项的所有必需JAR文件,同样,Scanner for Maven将自动执行此操作,最重要的是将正确执行此操作类“XXX”
- 带有Maven扫描仪的sonar.projectKey将自动设置为Maven组ID:artifactId
- 带Scanner for Maven的
和sonar.projectName
将分别正确设置为Maven项目名称和版本,以便在Maven项目中更改版本时不需要更改版本sonar.version
- 其他如
,sonar.sourceEncoding
,sonar.java.binaries
和sonar.java.test.binaries
以及Scanner for Maven也将自动设置sonar.java.test.libraries
- 通过命令行,如
mvn。。。声纳:声纳-Dsonar.something=something
- 或者在SonarQube用户界面中
- 或者直接在
pom.xml
通常
jacocout.exec
指的是关于单元测试的覆盖率数据,jacocoit.exec
指的是关于集成测试的覆盖率数据。它们是由jacocomaven插件创建的,在pom.xml
中,您配置了jacocomaven插件
来创建jacoco.exec
您不需要sonar项目。属性
如果您使用的是maven:请参阅有关使用Scanner for maven进行分析的文档-使用它应该足以避免许多配置问题,例如,警告类“XXX”不可访问
jacocout.exec
和jacocoit.exec
是执行jacocomaven插件的产品,分别用于单元测试和集成测试。我使用sonarqube和sonarscanner作为第三方。这就是为什么我有sonar-project.properties。我下载SonarQube和SonarScanner的RAR,然后首先启动SonarQube,然后转到CMD,转到我的文件夹(sampleProject),然后运行扫描仪。sonar-project.propertiesQ:“如何在没有任何警告的情况下运行SonarQube扫描仪?”答:使用SonarQube扫描仪for Maven。嘿,谢谢你的回答和解释。我的坏习惯是使用声纳扫描仪。如何仅在特定文件夹上运行覆盖率单元测试?例如,在我的Github项目中,我只想要服务文件上的Jacoco覆盖率。所以我需要排除服务之外的其他文件。但是当我运行mvn sonar:sonar时,它仍然扫描我项目中的所有文件。