diff --git a/.github/workflows/__quality-queries.yml b/.github/workflows/__quality-queries.yml index 1578d4c7a..8b74c1c7f 100644 --- a/.github/workflows/__quality-queries.yml +++ b/.github/workflows/__quality-queries.yml @@ -32,16 +32,58 @@ jobs: include: - os: ubuntu-latest version: linked + analysis-kinds: code-scanning + - os: ubuntu-latest + version: linked + analysis-kinds: code-quality + - os: ubuntu-latest + version: linked + analysis-kinds: code-scanning,code-quality - os: macos-latest version: linked + analysis-kinds: code-scanning + - os: macos-latest + version: linked + analysis-kinds: code-quality + - os: macos-latest + version: linked + analysis-kinds: code-scanning,code-quality - os: windows-latest version: linked + analysis-kinds: code-scanning + - os: windows-latest + version: linked + analysis-kinds: code-quality + - os: windows-latest + version: linked + analysis-kinds: code-scanning,code-quality - os: ubuntu-latest version: nightly-latest + analysis-kinds: code-scanning + - os: ubuntu-latest + version: nightly-latest + analysis-kinds: code-quality + - os: ubuntu-latest + version: nightly-latest + analysis-kinds: code-scanning,code-quality - os: macos-latest version: nightly-latest + analysis-kinds: code-scanning + - os: macos-latest + version: nightly-latest + analysis-kinds: code-quality + - os: macos-latest + version: nightly-latest + analysis-kinds: code-scanning,code-quality - os: windows-latest version: nightly-latest + analysis-kinds: code-scanning + - os: windows-latest + version: nightly-latest + analysis-kinds: code-quality + - os: windows-latest + version: nightly-latest + analysis-kinds: code-scanning,code-quality name: Quality queries input permissions: contents: read @@ -61,25 +103,28 @@ jobs: - uses: ./../action/init with: languages: javascript - analysis-kinds: code-scanning,code-quality + analysis-kinds: ${{ matrix.analysis-kinds }} tools: ${{ steps.prepare-test.outputs.tools-url }} - uses: ./../action/analyze with: output: ${{ runner.temp }}/results upload-database: false - name: Upload security SARIF + if: contains(matrix.analysis-kinds, 'code-scanning') uses: actions/upload-artifact@v4 with: name: quality-queries-${{ matrix.os }}-${{ matrix.version }}.sarif.json path: ${{ runner.temp }}/results/javascript.sarif retention-days: 7 - name: Upload quality SARIF + if: contains(matrix.analysis-kinds, 'code-quality') uses: actions/upload-artifact@v4 with: name: quality-queries-${{ matrix.os }}-${{ matrix.version }}.quality.sarif.json path: ${{ runner.temp }}/results/javascript.quality.sarif retention-days: 7 - name: Check quality query does not appear in security SARIF + if: contains(matrix.analysis-kinds, 'code-scanning') uses: actions/github-script@v7 env: SARIF_PATH: ${{ runner.temp }}/results/javascript.sarif @@ -87,6 +132,7 @@ jobs: with: script: ${{ env.CHECK_SCRIPT }} - name: Check quality query appears in quality SARIF + if: contains(matrix.analysis-kinds, 'code-quality') uses: actions/github-script@v7 env: SARIF_PATH: ${{ runner.temp }}/results/javascript.quality.sarif diff --git a/pr-checks/checks/quality-queries.yml b/pr-checks/checks/quality-queries.yml index 3f4ff3b1b..618f8e4cf 100644 --- a/pr-checks/checks/quality-queries.yml +++ b/pr-checks/checks/quality-queries.yml @@ -1,6 +1,7 @@ name: "Quality queries input" description: "Tests that queries specified in the quality-queries input are used." versions: ["linked", "nightly-latest"] +analysisKinds: ["code-scanning", "code-quality", "code-scanning,code-quality"] env: CHECK_SCRIPT: | const fs = require('fs'); @@ -29,25 +30,28 @@ steps: - uses: ./../action/init with: languages: javascript - analysis-kinds: code-scanning,code-quality + analysis-kinds: ${{ matrix.analysis-kinds }} tools: ${{ steps.prepare-test.outputs.tools-url }} - uses: ./../action/analyze with: output: "${{ runner.temp }}/results" upload-database: false - name: Upload security SARIF + if: contains(matrix.analysis-kinds, 'code-scanning') uses: actions/upload-artifact@v4 with: name: quality-queries-${{ matrix.os }}-${{ matrix.version }}.sarif.json path: "${{ runner.temp }}/results/javascript.sarif" retention-days: 7 - name: Upload quality SARIF + if: contains(matrix.analysis-kinds, 'code-quality') uses: actions/upload-artifact@v4 with: name: quality-queries-${{ matrix.os }}-${{ matrix.version }}.quality.sarif.json path: "${{ runner.temp }}/results/javascript.quality.sarif" retention-days: 7 - name: Check quality query does not appear in security SARIF + if: contains(matrix.analysis-kinds, 'code-scanning') uses: actions/github-script@v7 env: SARIF_PATH: "${{ runner.temp }}/results/javascript.sarif" @@ -55,6 +59,7 @@ steps: with: script: ${{ env.CHECK_SCRIPT }} - name: Check quality query appears in quality SARIF + if: contains(matrix.analysis-kinds, 'code-quality') uses: actions/github-script@v7 env: SARIF_PATH: "${{ runner.temp }}/results/javascript.quality.sarif" diff --git a/pr-checks/sync.py b/pr-checks/sync.py index beaa94398..6d23cafab 100755 --- a/pr-checks/sync.py +++ b/pr-checks/sync.py @@ -102,6 +102,18 @@ for file in sorted((this_dir / 'checks').glob('*.yml')): if checkSpecification.get('useAllPlatformBundle'): useAllPlatformBundle = checkSpecification['useAllPlatformBundle'] + + if 'analysisKinds' in checkSpecification: + newMatrix = [] + for matrixInclude in matrix: + for analysisKind in checkSpecification.get('analysisKinds'): + newMatrix.append( + matrixInclude | + { 'analysis-kinds': analysisKind } + ) + matrix = newMatrix + + # Construct the workflow steps needed for this check. steps = [ { 'name': 'Check out repository',