SonarQube - Есть ли основной пример / объяснение того, как проблемы покрытия могут быть решены? - PullRequest
0 голосов
/ 29 января 2019

Я очень новичок в использовании 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 )

и у меня есть тест (Джанго) для этого:

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)

Но когда я запускаю сонар,сканер, в онлайн-отчете я получаю сообщение о том, что эти строки не охвачены (см .: https://sonarcloud.io/component_measures?id=django_oppia&metric=new_coverage&selected=django_oppia%3Aapi%2Fmedia.py)

Я уверен, что у меня должна быть некоторая базовая ошибка / непонимание того, что метрика покрытия на самом делезначит.

Я был бы очень признателен, если бы кто-нибудь мог объяснить мне, что мне нужно добавить / обновить в моем коде (только конкретный пример выше), поэтому анализ SonarCloud не продолжает отмечать это как не

Спасибо за вашу помощь - если вам нужна дополнительная информация о коде / платформе / версиях и т. д., просто дайте мне знать.

Редактировать Команда сонара-сканерачто я запускаю:

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/**/*

Я запускаю это из корня моего исходного кода, и я не spисправлено / отредактировано что-либо в файле sonar / conf / sonar-scanner.properties (это просто установленная версия по умолчанию)

1 Ответ

0 голосов
/ 02 февраля 2019

Благодаря комментариям, опубликованным выше @metalisticpain, теперь у меня это работает.Проблема была из-за того, что я пропустил создание отчета о покрытии.

Для тех, у кого есть такая же проблема, вот как я ее решил ...

Сначала я запустил инструмент покрытия (изкорень каталога моего проекта):

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

Затем указал сонар-сканер на этот файл cover.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

Я добавил несколько дополнительных исключений, но что на самом деле имело значениедобавлял reportPath в cover.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...