From 4a4362bd66f77f0fbfa51b3962343fe1888c2362 Mon Sep 17 00:00:00 2001 From: olekca160406 Date: Sat, 22 Nov 2025 12:45:32 +0200 Subject: [PATCH] Update sonarcloud.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Зміна файлу sonalcloud --- .github/workflows/sonarcloud.yml | 105 +++++++++++++++---------------- 1 file changed, 52 insertions(+), 53 deletions(-) diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index e7840696..bed6494c 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -1,83 +1,82 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -# This workflow helps you trigger a SonarCloud analysis of your code and populates -# GitHub Code Scanning alerts with the vulnerabilities found. -# Free for open source project. - -# 1. Login to SonarCloud.io using your GitHub account - -# 2. Import your project on SonarCloud -# * Add your GitHub organization first, then add your repository as a new project. -# * Please note that many languages are eligible for automatic analysis, -# which means that the analysis will start automatically without the need to set up GitHub Actions. -# * This behavior can be changed in Administration > Analysis Method. -# -# 3. Follow the SonarCloud in-product tutorial -# * a. Copy/paste the Project Key and the Organization Key into the args parameter below -# (You'll find this information in SonarCloud. Click on "Information" at the bottom left) -# -# * b. Generate a new token and add it to your Github repository's secrets using the name SONAR_TOKEN -# (On SonarCloud, click on your avatar on top-right > My account > Security -# or go directly to https://sonarcloud.io/account/security/) - -# Feel free to take a look at our documentation (https://docs.sonarcloud.io/getting-started/github/) -# or reach out to our community forum if you need some help (https://community.sonarsource.com/c/help/sc/9) - name: SonarCloud analysis - on: push: - branches: [ "master" ] + branches: [ "main" ] + branches: [ "main" ] pull_request: - branches: [ "master" ] + branches: [ "main" ] workflow_dispatch: permissions: - pull-requests: read # allows SonarCloud to decorate PRs with analysis results + pull-requests: read jobs: sonar-check: name: Sonar Check - runs-on: windows-latest # безпечно для будь-яких .NET проектів + runs-on: windows-latest steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 with: { fetch-depth: 0 } - uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' - # 1) BEGIN: SonarScanner for .NET + - name: Install SonarScanner + + - name: Restore + run: dotnet restore NetSdrClient.sln + + - name: Test with Coverage + run: dotnet test NetSdrClient.sln -c Release --collect:"XPlat Code Coverage" --results-directory ./TestResults + + - name: Prepare Coverage for SonarCloud + run: | + dotnet tool install --global dotnet-sonarscanner + $coverageFile = Get-ChildItem -Path ./TestResults -Recurse -Filter "coverage.cobertura.xml" | Select-Object -First 1 + if ($coverageFile) { + Write-Host "Found coverage file: $($coverageFile.FullName)" + echo "COVERAGE_FILE=$($coverageFile.FullName)" >> $env:GITHUB_ENV + } + shell: pwsh + + - name: Convert Coverage to SonarQube format + run: | + dotnet tool install -g dotnet-reportgenerator-globaltool + reportgenerator "-reports:${{ env.COVERAGE_FILE }}" "-targetdir:./CoverageReport" "-reporttypes:SonarQube" + echo "SONAR_COVERAGE_FILE=./CoverageReport/SonarQube.xml" >> $env:GITHUB_ENV + shell: pwsh + - name: SonarScanner Begin run: | dotnet tool install --global dotnet-sonarscanner echo "$env:USERPROFILE\.dotnet\tools" >> $env:GITHUB_PATH dotnet sonarscanner begin ` - /k:"ppanchen_NetSdrClient" ` - /o:"ppanchen" ` - /d:sonar.token="${{ secrets.SONAR_TOKEN }}" ` - /d:sonar.cs.opencover.reportsPaths="**/coverage.xml" ` - /d:sonar.cpd.cs.minimumTokens=40 ` - /d:sonar.cpd.cs.minimumLines=5 ` - /d:sonar.exclusions=**/bin/**,**/obj/**,**/sonarcloud.yml ` - /d:sonar.qualitygate.wait=true + /k:"8540675-star_NetSdrClient" ` + /o:"8540675-star" ` + /d:sonar.token="${{ secrets.SONAR_TOKEN }}" ` + /d:sonar.host.url="https://sonarcloud.io" + /d:sonar.host.url="https://sonarcloud.io" ` + /d:sonar.coverageReportPaths="${{ env.SONAR_COVERAGE_FILE }}" ` + /d:sonar.cpd.cs.minimumTokens=40 ` + /d:sonar.cpd.cs.minimumLines=5 ` + /d:sonar.exclusions=**/bin/**,**/obj/**,**/sonarcloud.yml,**/TestResults/** ` + /d:sonar.qualitygate.wait=true shell: pwsh - # 2) BUILD & TEST - - name: Restore - run: dotnet restore NetSdrClient.sln + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + DOTNET_ROOT: ${{ env.DOTNET_ROOT }} + - name: Build + run: dotnet build NetSdrClientApp/NetSdrClientApp.csproj -c Release run: dotnet build NetSdrClient.sln -c Release --no-restore - #- name: Tests with coverage (OpenCover) - # run: | - # dotnet test NetSdrClientAppTests/NetSdrClientAppTests.csproj -c Release --no-build ` - # /p:CollectCoverage=true ` - # /p:CoverletOutput=TestResults/coverage.xml ` - # /p:CoverletOutputFormat=opencover - # shell: pwsh - # 3) END: SonarScanner + - name: SonarScanner End + run: dotnet sonarscanner end /d:sonar.token="$env:SONAR_TOKEN" run: dotnet sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}" shell: pwsh + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + DOTNET_ROOT: ${{ env.DOTNET_ROOT }}