python - SonarQube - 是否有关于如何解决覆盖问题的基本示例/解释?

标签 python django testing sonarqube

我对使用 SonarQube/Cloud 还很陌生(所以请保持温和!),我正在努力研究如何改进我的代码所具有的“新代码的 0% 覆盖率”。

这是一个例子:

我添加了代码:

    validation_errors = []

    for field in required:
        if field not in request.POST:
            validation_errors.append("field '{0}' missing".format(field))

    if len(validation_errors) > 0:
        return JsonResponse({'errors': validation_errors}, status=400 )

我有一个(Django)测试:

def test_required_params(self):
        # no username
        response = self.client.post(self.url, { 'password': 'secret', 'media_file': self.video_file })
        self.assertRaises(forms.ValidationError)
        self.assertEqual(response.status_code, 400)

但是当我运行 Sonar 扫描仪时,在在线报告中,我收到消息说这些行没有被覆盖(参见:https://sonarcloud.io/component_measures?id=django_oppia&metric=new_coverage&selected=django_oppia%3Aapi%2Fmedia.py)

我确定我一定对覆盖率指标的实际含义有一些非常基本的误解/不理解。

如果有人能向我解释我需要在我的代码中添加/更新什么(只是上面的特定示例),我将不胜感激,因此 SonarCloud 分析不会继续将其标记为未涵盖。

感谢您的帮助 - 如果您需要有关代码/平台/版本等的任何额外信息,请告诉我。

编辑 我正在运行的 Sonar 扫描仪命令:

sonar-scanner \
  -Dsonar.projectKey=django_oppia \
  -Dsonar.organization=alexlittle-github \
  -Dsonar.sources=. \
  -Dsonar.host.url=https://sonarcloud.io \
  -Dsonar.login=xxxxxxxxxx \
  -Dsonar.exclusions=docs/_build/**/*

我从源代码的根目录运行它,我没有在 sonar/conf/sonar-scanner.properties 文件中指定/编辑任何内容(它只是默认安装的版本)

最佳答案

感谢@metalisticpain 在上面发表的评论,我现在已经开始工作了。 问题是由于我错过了创建覆盖率报告。

对于遇到同样问题的其他人,以下是我的解决方法...

首先我运行了覆盖工具(从我的项目目录的根目录):

coverage erase
coverage run --branch --source=oppia
coverage xml -i

然后将 Sonar 扫描仪指向这个 coverage.xml 文件:

sonar-scanner \
  -Dsonar.projectKey=django_oppia \
  -Dsonar.organization=alexlittle-github \
  -Dsonar.sources=. \
  -Dsonar.host.url=https://sonarcloud.io \
  -Dsonar.login=xxxxxxxxxx \
  -Dsonar.exclusions=docs/_build/**/*,tests/**/*,oppiamobile/settings_secret.py \
  -Dsonar.python.coverage.reportPath=./coverage.xml

我添加了一些额外的排除项,但真正不同的是将 reportPaths 添加到 coverage.xml

关于python - SonarQube - 是否有关于如何解决覆盖问题的基本示例/解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429027/

相关文章:

python - 滚动平均数据绘图未正确平滑

python - 获取当前网址

Python markdown 添加类到表格

java - 在哪里定义测试 Maven 依赖项

http - 在创建改变服务器上数据的接口(interface)时,下列哪一项是正确的?

python - 如何将所有多值属性放入csv文件中

python - 字节串怎样才能很好的存储呢? - 不可 JSON 序列化 -

Django 休息框架 : Pickle Response

python - Robot 的 Telnet 库是如何工作的?

python - 如何在 AWS Elastic Beanstalk 上强制应用程序版本