Sonarcloud не отображает проблемы для приложения .net core с использованием dotnet-sonarscanner

#.net-core #sonarqube #static-analysis #sonarcloud

#.net-core #sonarqube #статический анализ #sonarcloud

Вопрос:

Я создал тестовое консольное приложение с использованием .net core 3.1, добавил его в github и настроил действие GitHub, используя шаблон, предоставленный Sonarcloud.io .

Часть анализа сборки выглядит следующим образом:

       ..sonarscannerdotnet-sonarscanner begin /k:"<projectkey>" /o:"<org>" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.scanner.force-deprecated-java-version=true
      dotnet build --configuration Release --no-restore
      ..sonarscannerdotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
  

Это нормально работает и не сообщает об ошибках. Тем не менее, когда я захожу в sonarcloud.io хотя я вижу, что он получил анализ, он не показывает никаких проблем, несмотря на то, что я намеренно добавил некоторые:

Основная ветвь отображает это:

введите описание изображения здесь

Тем не менее, код виден на вкладке code:

введите описание изображения здесь

Для PR я вижу:

введите описание изображения здесь

Но есть проблемы (я вижу их локально при использовании SonarLint, указывающего на sonarcloud.io ).

Чего мне не хватает?

Комментарии:

1. Укажите свойство sonar.sources=. в ..sonarscannerdotnet-sonarscanner begin

2. @SouravAtta после этого я получаю эту ошибку: File Program.cs can't be indexed twice. Please check that inclusion/exclusion patterns produce disjoint sets for main and test files

3. Файл Program.cs индексируется дважды, что означает, что вы можете исключить его один раз, используя свойства sonar sonar.exclusions=<path of file> , это решит проблему.

4. Я добавил /d:sonar.sources=. /d:sonar.exclusions=/SonarQubeTest/Program.cs , и он по-прежнему выдает ту же ошибку при индексации дважды. Смущает, почему я хотел бы указать папку sources (root with . ), а затем исключить файлы? Конечно, я не хочу, чтобы они были исключены?

5. Есть ли у вас Program.cs где-нибудь еще, кроме папки src. В sonar.sources , просто укажите исходную папку, как это sonar.source=src** Делает SonarQubeTest вашей исходной папкой?

Ответ №1:

Оказывается, это не показывало никаких проблем, потому что рассматривало все мои файлы как тестовый код. Я создал весь этот репозиторий как тест Sonarcloud, и мой проект был вызван SonarCloudTest.csproj , и у Sonar есть некоторые правила регулярных выражений для классификации кода.