Sonarqube + Jenkins:python覆盖率报告=>删除源代码中的行后,行超出了范围

问题描述

在使用sonarscanner分析jenkins中的Python项目时,我遇到一个非常奇怪的错误

实际上,在删除了许多代码行的提交之后,我运行了覆盖扫描(使用python模块),当我尝试将报告传递给声纳扫描仪二进制插件到Java詹金斯时出现异常,告诉我«行XXX在文件YYY中超出范围»。 XXX是我已删除行的一部分,而YYY是我的源文件之一。

有人经历过相同的行为吗?

我已经尝试删除jenkins home中的.sonar缓存和jenkins管道中的.sonarwork,但是没有效果...

提前感谢您的帮助!

干杯!

解决方法

问题在于覆盖 xml 格式和最新的声纳 cli 版本,用于分析指标通知的 XML。我们有两个选择:

1- 添加一个空格。 (在coverage.xml 文件的底部)。这适用于旧的 pytest 测试。

2- 在另一个项目中,我更新了以下包:pytest、pytest-cov 和coverage,这是最新版本。 (像魅力一样工作)。

这里有一个问题:更新到最新的 pytest 版本时,您可能会发现 conftest.py 不再存在的方法。例如:get_marker 可以用新的 get_closest_marker 代替。或者像“请求”这样的保留词。对于最新情况,您可以重命名名为 request 的方法。