【问题标题】:Why is SonarQube not respecting my exclusions?为什么 SonarQube 不尊重我的排除?
【发布时间】: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.exclusionssonar.exclusions 属性代替sonar.skippedModules。使用排除属性,控制台输出显示排除已读取,但从未将任何文件与我尝试使用的表达式匹配。我还尝试在 SonarQube Web 服务器 UI 的设置部分中设置这些属性,并产生了包含测试文件的相同结果。我能够成功地从分析中排除测试包的唯一方法是将它们从模块列表中删除,或者在我的运行配置的“目标”字段中的 -Dsonar.skippedModules 标志之后包含它们。但是,对于包含 80 多个捆绑包和 140,000 行代码的项目来说,这不是一个可维护的解决方案。 pom.xml 文件的组织有问题吗?这是我最好的猜测。

【问题讨论】:

    标签: eclipse maven sonarqube


    【解决方案1】:

    首先,sonar.skippedModules 不接受通配符模式 - 这可能是这不起作用的第一个原因。

    其次,SonarQube 4.3 中已弃用此属性,请参阅SONAR-5109。在最近的版本中,它被“sonar.skip”取代(参见MSONAR-46

    【讨论】:

    • 我已将 sonar.skippedModules 替换为 sonar.skip 并消除了我对通配符的使用。附在sonar.skip 中,我试过com.company.bundleA.test,com.company.bundleB.test../tests/com.company.bundleA.test,../tests/com.company.bundleB.test 都没有成功。还有什么我应该考虑的吗?
    • IIRC, sonar.skip 必须在要跳过的每个模块的 POM 中设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 2013-10-17
    • 2015-03-14
    相关资源
    最近更新 更多