2016-03-30 143 views
0

根据问题Sonar + Clover only runs on src-instrumented,建议先使用mvn clean clover2:setup install clover2:clover,然后:mvn sonar:sonar 。为什么要先运行mvn clean clover2:setup install clover2:clover,然后:mvn sonar:sonar

只是想知道为什么我们不能使用mvn clean clover2:setup install clover2:三叶草声纳:声纳?

+0

恭喜您的第一篇文章!欢迎来到这个美好的社区。 - 莎拉:P(是的,我们知道其他每个) – sarahTheButterFly

回答

1

过去,推荐单独运行目标sonar:sonar的方法。这是没有更多的情况下,因为Maven的SonarQube扫描仪停止尝试运行单元测试+通过分派新的Maven生命周期来收集您的覆盖范围。

一般建议现在是在单个命令中运行目标。例如mvn clean package sonar:sonar

在Clover的情况下,clover:setup的目标将改变Maven模型以使所有其他插件(如surefire)使用仪器化类而不是原始源代码。这确实是一个问题,因为它会阻止SonarQube匹配类文件。所以在你的情况下,你应该坚持两个不同的目标,或者手动配置sonar.sources来引用原始源代码。

+0

感谢您的回答。但我的问题是如果我在一个命令中运行所有目标,单元测试覆盖在仪表板中是空白的。我必须分别运行它们以确保显示单元测试覆盖率。这是与SonarQube版本还是声纳maven插件版本有关?从声纳文档中可以看出,如果在4.5之前使用SonarQube实例,则应该使用maven-sonar-plugin 2.6,而我们公司正在使用SonarQube版本4.3.2。 – Ken

+0

谢谢,这个解释真的很有道理! – Ken

0

相比Maven的日志,发现可能的原因:

的“MVN清洁clover2:安装程序安装clover2:三叶草声纳:声纳”似乎有问题,寻源迪尔斯。日志显示它使用$ {project} \ target \ clover \ src-instrumented和$ {project} \ target \ generated-sources \ annotations作为源目录。

如果明确指定src/main/java,那么这个单个命令就可以正常工作。唯一棘手的是为什么单独运行目标不需要指定sonar.sources,但插件仍然可以为源代码目录找到正确的文件夹。

+0

sonar:sonar将从Maven模型(Maven插件API)中获得'sonar.sources'的默认值。三叶草正在改变模型(可能使像surefire这样的其他插件使用插装类)。所以我会更新我的答案。 –

相关问题