# 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. # # Find more information at: # https://github.com/microsoft/msvc-code-analysis-action name: Microsoft C++ Code Analysis on: push: branches: [ "develop" ] pull_request: branches: [ "develop" ] schedule: - cron: '44 17 * * 1' env: # Path to the CMake build directory. build: '${{ github.workspace }}/build' permissions: contents: read jobs: analyze: permissions: contents: read # for actions/checkout to fetch code security-events: write # for github/codeql-action/upload-sarif to upload SARIF results actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status name: Analyze runs-on: windows-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Configure CMake run: cmake -B ${{ env.build }} # Build is not required unless generated source files are used # - name: Build CMake # run: cmake --build ${{ env.build }} - name: Initialize MSVC Code Analysis uses: microsoft/msvc-code-analysis-action@04825f6d9e00f87422d6bf04e1a38b1f3ed60d99 # Provide a unique ID to access the sarif output path id: run-analysis with: cmakeBuildDirectory: ${{ env.build }} # Ruleset file that will determine what checks will be run ruleset: NativeRecommendedRules.ruleset - name: Patch SARIF with unique categories shell: pwsh run: | $sarifPath = "${{ steps.run-analysis.outputs.sarif }}" $outputPath = "${{ env.build }}\results_fixed.sarif" $sarif = Get-Content $sarifPath -Raw | ConvertFrom-Json for ($i = 0; $i -lt $sarif.runs.Count; $i++) { $run = $sarif.runs[$i] # Ensure properties exists if ($null -eq $run.PSObject.Properties['properties']) { $run | Add-Member -NotePropertyName 'properties' -NotePropertyValue @{} } # Add or overwrite category $run.properties['category'] = "run-$i" } $sarif | ConvertTo-Json -Depth 100 | Set-Content -Encoding utf8 $outputPath Write-Host "✅ Wrote patched SARIF to $outputPath" # Upload SARIF file to GitHub Code Scanning Alerts - name: Upload SARIF to GitHub uses: github/codeql-action/upload-sarif@v3 with: sarif_file: ${{ env.build }}/results_fixed.sarif # Upload SARIF file as an Artifact to download and view #- name: Upload SARIF as an Artifact # uses: actions/upload-artifact@v4 # with: # name: sarif-file # path: ${{ steps.run-analysis.outputs.sarif }}