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

Posted

技术标签:

【中文标题】Sonarqube + Jenkins:python 覆盖率报告 => 删除源中的行后行超出范围【英文标题】:Sonarqube + Jenkins : python coverage report => Line out of range after deleting lines in sources 【发布时间】:2021-01-08 21:12:22 【问题描述】:

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

事实上,在删除了很多代码行的提交之后,我运行了覆盖扫描(使用 python 模块),当我尝试将报告传递给声纳扫描器二进制插件到 Jenkins,一个 java出现异常,告诉我«line XXX is out of range in file YYY»。其中 XXX 是我删除的行的一部分,而 YYY 是我的源文件之一。

有人遇到过同样的行为吗?

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

提前感谢您的帮助!

干杯!

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于Sonarqube + Jenkins:python 覆盖率报告 => 删除源中的行后行超出范围的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins——Jenkins+SonarQube代码审查

Jenkins集成sonarQube 8.2

Jenkins+SonarQube代码审查

Jenkins集成Sonarqube

我如何在 jenkins 上发布 sonarqube 报告?使用 sonarqube portlet

自动代码质量分析(GitLab+JenKins+SonarQube)