Azure Devops + Coverlet + SonarQube показывает 0% - PullRequest
1 голос
/ 07 февраля 2020

Доброе утро,

Извините, что беспокою вас, у меня есть проблема, и у меня нет потенциальных клиентов.

У меня есть конвейер на Azure DevOps, где я использую coverlet для генерации кода отчет о покрытии, когда я использую команду "do tnet test".

enter image description here

Действительно, отчет хорошо сгенерирован.

enter image description here

Сначала на шаге «Подготовить анализ на SonarQube» я установил переменную «sonar.cs.opencover.reportsPaths =» $ (Agent.TempDirectory) / покрытие .opencover. xml ".

enter image description here

И все же конец в моем SonarQube - покрытие кода 0% ... Я не знаю что делать или какие-либо провода ...

enter image description here

Спасибо

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Я сделал много вещей, чтобы наконец-то добиться того, чтобы покрытие работало, но я думаю, что проблема заключалась в том, что «ProjectGUID» отсутствовал в каждом .csproj моего решения, что делало проекты игнорируемыми сканером SonarQube.

Я также обновил SonarQube 6.2 до 8.1 одновременно, что, возможно, решило проблему.

Мои шаги остались без изменений, чтобы сделать эту работу.

0 голосов
/ 10 февраля 2020

Я не могу воспроизвести вышеуказанную проблему. И это трудно устранить, поскольку вы не поделились своей конфигурацией для do tnet тестового задания или sonarqube подготовить задачу .

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

1, создать сервер sonarqube и настроить мои projectName и projectKey (я использую azure экземпляр контейнера sonarqube, проверьте здесь для получения подробной информации).

2, настроить подключение службы sonarqube в azure devops.

3, создать конвейер сборки. Я использую конвейер yaml.

В Задача подготовки конфигурации анализа , я выбираю Использовать автономный сканер , а Режим равен Вручную предоставить конфигурацию . И я установил переменную sonar.cs.opencover.reportsPaths="$(Agent.TempDirectory)/coverage.opencover.xml".

Ниже на скриншоте показана настройка задачи в классическом c пользовательском интерфейсе.

enter image description here

In my do tnet тестовое задание Я устанавливаю аргументы, как показано ниже, и специально выводю результат покрытия в папку $(Agent.TempDirectory)/.

arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutput=$(Agent.TempDirectory)/ /p:CoverletOutputFormat=opencover'

Ниже приведено полное содержимое моего azure -pipelines.yml файла.

trigger: none

jobs:
- job: 'Tests'
  pool: 
    vmImage: windows-latest

  variables:
    buildConfiguration: 'Release'
  continueOnError: true

  steps:     
  - task: SonarQubePrepare@4
    displayName: 'Prepare analysis on SonarQube'
    inputs:
       SonarQube: sonarlevi
       scannerMode: CLI
       configMode: manual
       cliProjectKey: myproject2
       cliProjectName: myproject2
       extraProperties: |
          sonar.cs.opencover.reportsPaths="$(Agent.TempDirectory)/coverage.opencover.xml"


  - task: DotNetCoreCLI@2
    inputs:
      command: restore
      projects: '**\*.csproj'

  - task: DotNetCoreCLI@2
    inputs:
      command: custom
      custom: tool
      arguments: install --tool-path . dotnet-reportgenerator-globaltool 
    displayName: Install ReportGenerator tool

  - task: DotNetCoreCLI@2
    displayName: Test .NET
    inputs:
      command: test
      projects: '**\*Test*.csproj'
      publishTestResults: false
      arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutput=$(Agent.TempDirectory)/ /p:CoverletOutputFormat=opencover'
    condition: succeededOrFailed()


  - task: SonarQubeAnalyze@4

    displayName: 'Run Code Analysis'

  - task: SonarQubePublish@4

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