#.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 есть некоторые правила регулярных выражений для классификации кода.