Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven SonarQube Jacoco JUnit:SonarScanner遇到许多意想不到的问题_Maven_Sonarqube_Sonarqube Scan - Fatal编程技术网

Maven SonarQube Jacoco JUnit:SonarScanner遇到许多意想不到的问题

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

我有一个简单的项目,需要运行JUnit测试,让SonarQube用SonarScanner扫描/运行JUnit结果的测试。我把我的项目放在

存在一些问题:

  • 警告:无法通过classloader声纳()访问类“XXX”
  • 没有jacoco-it.exec和jacoco-ut.exec,只在Sonascanner上运行jacoco.exec
  • 运行测试JUnit时无法排除某些文件,因为我只想在我的服务文件夹()中运行测试
  • 这是我的sonar-project.properties:

    # 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中创建一些文件和文件夹

    之后,我运行声纳扫描仪扫描我的项目,但我遇到了这些问题

    我的问题:

  • 如何在没有任何警告的情况下运行SonarQube扫描仪
  • 扫描JUnit结果时如何正确排除文件?因为我使用参考设置,覆盖率仍然扫描文件
  • 如何创建jacoco-it.exec和jacoco-ut.exec并在Sonascanner上运行
  • 我的项目是基于这个

    使用,而不是仅仅使用。否则,您将在配置方面遇到麻烦,因为您需要手动执行所有操作:

    • sonar.sources
      很可能是不正确的-应该是
      src/main/java
      ,并且将由Scanner for Maven正确配置,这就是为什么您将不需要的测试文件作为主文件进行分析的原因
    • 以及通常用于基于Maven项目的
      src/test/java
    • sonar.java.libraries
      为空,因此无法通过classloader sonar访问
      类“XXX”
      -可能很难列出Maven项目依赖项的所有必需JAR文件,同样,Scanner for Maven将自动执行此操作,最重要的是将正确执行此操作
    • 带有Maven扫描仪的sonar.projectKey将自动设置为Maven组ID:artifactId
    • 带Scanner for Maven的
      sonar.projectName
      sonar.version
      将分别正确设置为Maven项目名称和版本,以便在Maven项目中更改版本时不需要更改版本
    • 其他如
      sonar.sourceEncoding
      sonar.java.binaries
      sonar.java.test.binaries
      sonar.java.test.libraries
      以及Scanner for Maven也将自动设置
    如果需要,您仍然可以提供其他附加属性

    • 通过命令行,如
      mvn。。。声纳:声纳-Dsonar.something=something
    • 或者在SonarQube用户界面中
    • 或者直接在
      pom.xml
    如何创建jacoco-it.exec和jacoco-ut.exec并在Sonascanner上运行


    通常
    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时,它仍然扫描我项目中的所有文件。