【发布时间】:2015-09-17 19:47:59
【问题描述】:
我有一个在 Eclipse 中开发并使用 Maven 构建的 Java 项目。几乎我所有的源包(在 /src 中)都有一个相应的测试包(在 /tests 中)。我希望我的 SonarQube Maven 构建只分析源包并忽略测试包。从我的pom.xml 在与/src 和/tests 相同级别的文件系统中的一个包中,我有类似以下内容:
...
<profile>
<id>sonar</id>
...
<properties>
<sonar.skippedModules>**/tests/**</sonar.skippedModules>
</properties>
</profile>
...
<modules>
<module>../src/com.company.bundleA</module>
<module>../tests/com.company.bundleA.test</module>
...
</modules>
当我运行构建时,测试包中的源代码包含在 SonarQube 分析中。或者,我尝试使用sonar.test.exclusions 和sonar.exclusions 属性代替sonar.skippedModules。使用排除属性,控制台输出显示排除已读取,但从未将任何文件与我尝试使用的表达式匹配。我还尝试在 SonarQube Web 服务器 UI 的设置部分中设置这些属性,并产生了包含测试文件的相同结果。我能够成功地从分析中排除测试包的唯一方法是将它们从模块列表中删除,或者在我的运行配置的“目标”字段中的 -Dsonar.skippedModules 标志之后包含它们。但是,对于包含 80 多个捆绑包和 140,000 行代码的项目来说,这不是一个可维护的解决方案。 pom.xml 文件的组织有问题吗?这是我最好的猜测。
【问题讨论】: