Sonar JaCoCo报告中找不到修复文件

时间:2018-07-05 10:55:39

标签: 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.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包)中的文件。但是,在JaCoCo html报告中,我有default软件包和vars文件夹的内容。

2 个答案:

答案 0 :(得分:1)

与此同时,我发现了某些消息的原因:

  1. x:由于sonar groovy plugin空软件包中的文件处理问题导致无法正确处理,请参见issue #73
  2. File not found: /deploy.groovy:要识别的测试文件必须列在File not found: steps/DeployTest.groovy下。但是,如果将sonar.source添加到tests/groovy,则可能不会将其添加到sonar.source,从而导致 GroovySurefireSensor中的资源问题: sonar.tests

答案 1 :(得分:0)

File not found警告由SonarGroovy插件的AbstractAnalyzer.java类编写。据我了解,该插件已成功找到您的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。二进制文件。来自SonarGroovy plugin网站的以下引用也可能会有所帮助:

  

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