问题描述
在使用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 的方法。