我想在我的声纳日志中解决警告:
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
文件夹的覆盖范围。
同时我找到了一些消息的原因:
File not found: /deploy.groovy
:由于sonar groovy plugin空文件包中的文件处理问题未正确处理,请参阅issue #73File not found: steps/DeployTest.groovy
:测试文件需要在sonar.source
下列出才能被识别。但是,如果将tests/groovy
添加到sonar.source
,它可能不会被添加到sonar.tests
,导致GroovySurefireSensor中出现资源问题:WARN: Resource not found: steps/DeployTest.groovy
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项目,将自动设置该属性。