-
Notifications
You must be signed in to change notification settings - Fork 329
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add the check-sarif action #1096
Merged
Merged
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
bcb7fad
Add the check-sarif action
aeisenberg 40b2800
Add capability to filter queries
aeisenberg 06e27d3
Merge branch 'aeisenberg/js-yaml-typings' into aeisenberg/remove-queries
aeisenberg eec34d5
Add integration tests for query filters
aeisenberg 428caf0
Update changelog
aeisenberg 4918636
Clarify variable names in new action
aeisenberg 6834383
Apply suggestions from code review
aeisenberg 59ca9b5
Extract query-filters test into a composite action
aeisenberg 777b778
Spelling, capitalization, and better descriptions
aeisenberg 6db77ee
Merge remote-tracking branch 'upstream/main' into aeisenberg/remove-q…
aeisenberg d7459f0
Merge branch 'aeisenberg/check-sarif-action' into aeisenberg/remove-q…
aeisenberg ee4575b
Merge branch 'main' into aeisenberg/check-sarif-action
aeisenberg 7c412c6
Merge branch 'aeisenberg/check-sarif-action' into aeisenberg/remove-q…
aeisenberg 80ecdcd
Merge pull request #1098 from github/aeisenberg/remove-queries
aeisenberg File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
name: Check SARIF | ||
description: Checks a SARIF file to see if certain queries were run and others were not run. | ||
inputs: | ||
sarif-file: | ||
required: true | ||
description: The sarif file to check | ||
|
||
queries-run: | ||
required: true | ||
description: | | ||
Comma separated list of query ids that should be included in this SARIF file. | ||
|
||
queries-not-run: | ||
henrymercer marked this conversation as resolved.
Show resolved
Hide resolved
|
||
required: true | ||
description: | | ||
Comma separated list of query ids that should NOT be included in this SARIF file. | ||
|
||
runs: | ||
using: node12 | ||
henrymercer marked this conversation as resolved.
Show resolved
Hide resolved
|
||
main: index.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
'use strict' | ||
henrymercer marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
const core = require('@actions/core') | ||
const fs = require('fs') | ||
|
||
const sarif = JSON.parse(fs.readFileSync(core.getInput('sarif-file'), 'utf8')) | ||
const rules = sarif.runs[0].tool.extensions.flatMap(ext => ext.rules || []) | ||
const ruleIds = rules.map(rule => rule.id) | ||
|
||
// Check that all the expected queries ran | ||
const expectedQueriesRun = getQueryIdsInput('queries-run') | ||
const queriesThatShouldHaveRunButDidNot = expectedQueriesRun.filter(queryId => !ruleIds.includes(queryId)) | ||
|
||
if (queriesThatShouldHaveRunButDidNot.length > 0) { | ||
core.setFailed(`The following queries were expected to run but did not: ${queriesThatShouldHaveRunButDidNot.join(', ')}`) | ||
} | ||
|
||
// Check that all the unexpected queries did not run | ||
const expectedQueriesNotRun = getQueryIdsInput('queries-not-run') | ||
|
||
const queriesThatShouldNotHaveRunButDid = expectedQueriesNotRun.filter(queryId => ruleIds.includes(queryId)) | ||
|
||
if (queriesThatShouldNotHaveRunButDid.length > 0) { | ||
core.setFailed(`The following queries were NOT expected to have run but did: ${queriesThatShouldNotHaveRunButDid.join(', ')}`) | ||
} | ||
|
||
|
||
core.startGroup('All queries run') | ||
rules.forEach(rule => { | ||
core.info(`${rule.id}: ${(rule.properties && rule.properties.name) || rule.name}`) | ||
}) | ||
core.endGroup() | ||
|
||
core.startGroup('Full SARIF') | ||
core.info(JSON.stringify(sarif, null, 2)) | ||
core.endGroup() | ||
|
||
function getQueryIdsInput(name) { | ||
return core.getInput(name) | ||
.split(',') | ||
.map(q => q.trim()) | ||
.filter(q => q.length > 0) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
name: Query Filter Test | ||
Check failure Code scanning / CodeQL Inconsistent action input
Action [.github/query-filter-test](1) and action [init](2) both declare input tools, however their definitions are not identical. This may be confusing to users.
Action [.github/query-filter-test](1) and action [init](2) both declare input config-file, however their definitions are not identical. This may be confusing to users.
|
||
description: Runs a test of query filters using the check SARIF action | ||
inputs: | ||
sarif-file: | ||
required: true | ||
description: The SARIF file to check | ||
|
||
queries-run: | ||
required: true | ||
description: | | ||
Comma separated list of query ids that should be included in this SARIF file. | ||
|
||
queries-not-run: | ||
required: true | ||
description: | | ||
Comma separated list of query ids that should NOT be included in this SARIF file. | ||
|
||
config-file: | ||
required: true | ||
description: | | ||
The location of the codeql configuration file to use. | ||
|
||
tools: | ||
required: true | ||
description: | | ||
The url of codeql to use. | ||
|
||
runs: | ||
using: composite | ||
steps: | ||
- uses: ./../action/init | ||
with: | ||
languages: javascript | ||
config-file: ./.github/codeql/codeql-config-query-filters1.yml | ||
tools: ${{ inputs.tools }} | ||
db-location: ${{ runner.temp }}/query-filter-test | ||
- uses: ./../action/analyze | ||
with: | ||
output: ${{ runner.temp }}/results | ||
upload-database: false | ||
upload: false | ||
env: | ||
TEST_MODE: "true" | ||
- name: Check SARIF | ||
uses: ./../action/.github/check-sarif | ||
with: | ||
sarif-file: ${{ inputs.sarif-file }} | ||
queries-run: ${{ inputs.queries-run}} | ||
queries-not-run: ${{ inputs.queries-not-run}} | ||
- name: Cleanup after test | ||
shell: bash | ||
run: rm -rf "$RUNNER_TEMP/results" "$RUNNER_TEMP//query-filter-test" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
name: Check queries that ran | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
- releases/v1 | ||
- releases/v2 | ||
pull_request: | ||
types: | ||
- opened | ||
- synchronize | ||
- reopened | ||
- ready_for_review | ||
workflow_dispatch: {} | ||
|
||
jobs: | ||
expected-queries: | ||
timeout-minutes: 45 | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check out repository | ||
uses: actions/checkout@v3 | ||
- name: Prepare test | ||
id: prepare-test | ||
uses: ./.github/prepare-test | ||
with: | ||
version: latest | ||
- uses: ./../action/init | ||
with: | ||
languages: javascript | ||
tools: ${{ steps.prepare-test.outputs.tools-url }} | ||
- uses: ./../action/analyze | ||
with: | ||
output: ${{ runner.temp }}/results | ||
upload-database: false | ||
upload: false | ||
env: | ||
TEST_MODE: true | ||
|
||
- name: Check Sarif | ||
uses: ./../action/.github/check-sarif | ||
with: | ||
sarif-file: ${{ runner.temp }}/results/javascript.sarif | ||
queries-run: js/incomplete-hostname-regexp,js/path-injection | ||
queries-not-run: foo,bar |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
name: Query filters tests | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
- releases/v1 | ||
- releases/v2 | ||
pull_request: | ||
types: | ||
- opened | ||
- synchronize | ||
- reopened | ||
- ready_for_review | ||
workflow_dispatch: {} | ||
|
||
jobs: | ||
expected-queries: | ||
timeout-minutes: 45 | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check out repository | ||
uses: actions/checkout@v3 | ||
- name: Prepare test | ||
id: prepare-test | ||
uses: ./.github/prepare-test | ||
with: | ||
version: latest | ||
|
||
- name: Check SARIF for default queries with Single include, Single exclude | ||
uses: ./../action/.github/query-filter-test | ||
with: | ||
sarif-file: ${{ runner.temp }}/results/javascript.sarif | ||
queries-run: js/zipslip | ||
queries-not-run: js/path-injection | ||
config-file: ./.github/codeql/codeql-config-query-filters1.yml | ||
tools: ${{ steps.prepare-test.outputs.tools-url }} | ||
|
||
- name: Check SARIF for query packs with Single include, Single exclude | ||
uses: ./../action/.github/query-filter-test | ||
with: | ||
sarif-file: ${{ runner.temp }}/results/javascript.sarif | ||
queries-run: js/zipslip,javascript/example/empty-or-one-block | ||
queries-not-run: js/path-injection | ||
config-file: ./.github/codeql/codeql-config-query-filters2.yml | ||
tools: ${{ steps.prepare-test.outputs.tools-url }} | ||
|
||
- name: Check SARIF for query packs and local queries with Single include, Single exclude | ||
uses: ./../action/.github/query-filter-test | ||
with: | ||
sarif-file: ${{ runner.temp }}/results/javascript.sarif | ||
queries-run: js/zipslip,javascript/example/empty-or-one-block,inrepo-javascript-querypack/show-ifs | ||
queries-not-run: js/path-injection,complex-python-querypack/show-ifs,complex-python-querypack/foo/bar/show-ifs | ||
config-file: ./.github/codeql/codeql-config-query-filters3.yml | ||
tools: ${{ steps.prepare-test.outputs.tools-url }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Check failure
Code scanning / CodeQL
Inconsistent action input