Sonarqube Sonar JaCoCo报告中未找到修复文件

Sonarqube Sonar JaCoCo报告中未找到修复文件,sonarqube,jacoco,Sonarqube,Jacoco,我想解决声纳日志中的警告: INFO: Sensor Groovy JaCoCo [groovy] INFO: Checking binary directory: /home/project/target/classes INFO: Analysing /home/project/target/jacoco.exec INFO: Analysing /home/project/target/jacoco.exec WARN: File not found: utils/Rule.groov

我想解决声纳日志中的警告:

INFO: Sensor Groovy JaCoCo [groovy]
INFO:   Checking binary directory: /home/project/target/classes
INFO: Analysing /home/project/target/jacoco.exec
INFO: Analysing /home/project/target/jacoco.exec
WARN: File not found: utils/Rule.groovy
WARN: File not found: com/acme/manager/Command.groovy
WARN: File not found: com/acme/manager/util/YamlReader.groovy
WARN: File not found: steps/DeployTest.groovy
WARN: File not found: /deploy.groovy
我的设置是:

x.sonar.projectBaseDir=.
x.sonar.sources=src,vars
x.sonar.tests=test/groovy
x.sonar.test.exclusions=test/groovy/com/acme/manager
一些警告是由于排除文件引起的(这些文件在另一个声纳模块中进行评估)。但其他人不应该成为问题。知道这里出了什么问题吗


在Sonar中,我得到了
src/com/acme/anything
下文件的覆盖范围,但不是从
vars
文件夹(
default
package)获得的。但是在JaCoCo html报告中,我有
默认的
包和
vars
文件夹的覆盖范围。

未找到
文件的警告是由SonarGroovy插件的类编写的。据我所知,该插件成功地找到了您的jacoco.exec结果(其中包含它未能找到的文件路径,如
utils/Rule.groovy

可能您没有正确设置
sonar.sources
,它应该包括groovy源代码的路径,如果您有groovy源代码,还应该包括
vars
文件夹。默认情况下,
sonar.sources
仅设置为
src
,因此可能找不到
vars
文件夹中的代码。您可以尝试将缺少的文件夹添加到源中,如下所示:

sonar.sources=src,vars
groovy代码覆盖率还需要属性
sonar.groovy.binaries
(它应该指向已编译的groovy类文件),如果没有显式设置,那么
sonar.binaries
将用于查找groovy二进制文件。网站上的以下引用可能也会有所帮助:

groovy插件在分析JaCoCo报告时需要访问源二进制文件。因此,必须为分析配置属性
sonar.groovy.binaries
(二进制文件夹的逗号分隔路径)。对于Maven和gradle项目,属性是自动设置的


同时,我发现了一些信息的原因:

  • 找不到文件:/deploy.groovy
    :由于空包中的文件处理存在问题,请参阅
  • 未找到文件:步骤/DeployTest.groovy
    :测试文件需要列在
    sonar.source
    下才能识别。但是,如果将
    tests/groovy
    添加到
    sonar.source
    中,则可能无法将其添加到
    sonar.tests
    ,从而导致GroovySurefireSensor中出现资源问题:
    警告:未找到资源:步骤/DeployTest.groovy

  • 我们使用Maven,所以我相信
    sonar.groovy.binaries
    是自动设置的。我更新了答案。您可能必须明确地让Sonar知道包含源代码的其他文件夹的存在。默认情况下,它只搜索
    src
    文件夹。