如何忽略 Coverity Connect 分析结果中的 JAVA 个测试?

How do I ignore JAVA tests in Coverity Connect analysis result?

我使用 Coverity 扫描我的项目是否存在安全问题。

我想知道的是如何排除任何java测试(注意:集成和单元)来自缺陷提交后可用的分析结果。

我确实使用 maven 来构建项目,并且我使用标志 -Dmaven.skip.test=true 排除了单元测试。 尽管这使得 Coverity 不扫描单元测试,但它仍然扫描集成测试。

我项目中的所有集成测试在文件标题中都包含单词 "Test"。因此,我开始查看 Coverity 中提供的过滤器部分。我当时尝试的是正则表达式 (.*(!?(Test).*)$),但它没有用。似乎 coverity 支持两个匹配字符(* and ? - 见下图),而它似乎不支持任何否定 look-around.

有什么好的方法可以简单干净地完成这项任务吗?

由于 Coverity 依赖于您的 Maven 构建,您可以排除:

  • 编译和执行单元测试(通过 Surefire 插件)和 集成测试(通过 Failsafe 插件)通过添加 -Dmaven.skip.test=true
  • 通过-DskipTests
  • 执行单元测试和集成测试
  • 通过-DskipITs
  • 执行集成测试

相反,如果您在单独的 Maven 模块中进行集成测试,则可以通过配置文件直接将其从 Maven 构建中排除,如下例所示——请参阅聚合器 pom.xml 和 Maven 命令行的摘录待推出:

<modules>
  <!-- remove 'my-it-module' from this list -->
</modules>
<profiles>
    <profile><id>build-it</id>
        <activation><activeByDefault>true</activeByDefault></activation>
        <modules><module>my-it-module</module></modules>
    </profile>
</profiles>

然后是mvn install -P !build-it