执行分析后如何将测试结果和代码覆盖率结果发送到 SonarQube 项目

Posted

技术标签:

【中文标题】执行分析后如何将测试结果和代码覆盖率结果发送到 SonarQube 项目【英文标题】:How to send test results and code coverage results to SonarQube project after executing analysis 【发布时间】:2021-09-20 11:46:36 【问题描述】:

我有一个单体应用程序,我想同时执行静态代码分析和代码覆盖率报告给声纳。但是,我的声纳扫描至少需要 30 分钟,这对于 CI 反馈时间非常不利。

我想知道是否有一种方法可以在不同任务的同时运行静态代码分析,并在 CI 的后期向声纳报告测试覆盖率。我需要它们在一次扫描中。

SQ 文档清楚地说明了并行扫描不可用。但是,这不是并行的,而只是聚合。

【问题讨论】:

【参考方案1】:

这是不可能的。 SonarScanner 将所有数据一起发送。它还需要访问测试结果以正确呈现数据。您可以考虑将测试执行拆分到安全的某个时间。

                  /-> test 1/3 --\
                 /                \
Start --> Build ----> test 2/3 -----> SonarScanner --> End
                 \                /
                  \-> test 3/3 --/

【讨论】:

我确实有 20 次并行运行的并行测试。由于设计限制,无法进一步划分它们。只要我事先执行静态代码扫描器以及构建或测试等其他阶段,我就可以一次性将数据发送到 sonarqube 服务器。 如我所写,不可能分两步完成。

以上是关于执行分析后如何将测试结果和代码覆盖率结果发送到 SonarQube 项目的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube:更新现有分析数据

黑盒测试与白盒测试

覆盖率啥意思

以下Java代码执行结果是啥,请详细分析为啥?

CI 中一次单元测试覆盖率问题定位分析

代码覆盖率工具 EMMA