| # 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 }} |