- Notifications
You must be signed in to change notification settings - Fork373
Produce separate SARIF file forquality-queries
alerts#2935
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
87b6687
tofe76653
CompareUh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Pull Request Overview
This PR enables separate generation and upload of SARIF files for code-quality queries specified via thequality-queries
input, in addition to the existing code-scanning SARIF flow.
- Introduces
SARIF_UPLOAD_TARGET
enum andUploadTarget
interface to distinguish code scanning vs. code quality uploads. - Extends file discovery (
findSarifFilesInDir
,getSarifFilePaths
) and upload logic (uploadFiles
,uploadPayload
,validateUniqueCategory
) to filter and handle.quality.sarif
files. - Updates
analyze.ts
/analyze-action.ts
to produce and upload quality SARIFs whenquality-queries
are provided, and adjusts CI workflows to upload/check both SARIF artifacts.
Reviewed Changes
Copilot reviewed 12 out of 17 changed files in this pull request and generated no comments.
Show a summary per file
File | Description |
---|---|
src/upload-lib.ts | Added enum and targets for separate SARIF uploads, filtering logic for.quality.sarif . |
src/upload-lib.test.ts | Added tests for filtering.quality.sarif files andvalidateUniqueCategory prefix. |
src/analyze.ts | Introduced default query suites andresolveQuerySuiteAlias ; generate quality SARIF. |
src/analyze.test.ts | Added tests forresolveQuerySuiteAlias . |
src/analyze-action.ts | Uploads quality SARIF and setsquality-sarif-id output whenquality-queries present. |
pr-checks/checks/quality-queries.yml | CI updates to upload security vs. quality SARIF artifacts and adjust checks. |
Comments suppressed due to low confidence (2)
src/upload-lib.ts:427
- The
getSarifFilePaths
function bypasses theisSarif
filter whensarifPath
is a single file. This can lead to uploading unwanted files (e.g., a.quality.sarif
when targeting code-scanning). ApplyisSarif
to the single-file case or throw if it does not match.
sarifFiles = [sarifPath];
pr-checks/checks/quality-queries.yml:29
- [nitpick] The CI step now only checks config properties in the quality SARIF, omitting the original security SARIF check. Consider adding a separate check for
${{ runner.temp }}/results/javascript.sarif
to ensure both artifacts are validated.
SARIF_PATH: "${{ runner.temp }}/results/javascript.quality.sarif"
3393b4e
to81969d7
Compare4088317
tob403ba2
CompareThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Nice, and pleasantly surgical.
I think this does the right thing, except for a missing quality.sarif predicate in the very end.
Other than that it's mostly nits, and some concerns about maintenance in the long term. We have already discussed them elsewhere. Perhaps we should update the discussion document with our current choice for query resolution.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
@@ -567,6 +581,30 @@ export function buildPayload( | |||
returnpayloadObj; | |||
} | |||
// Represents configurations for different services that we can upload SARIF to. | |||
exportinterfaceUploadTarget{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
regarding the target/endpoint comment above: this is a much better place to call something target. I'd probably preferSarifUploadConfig
but that is splitting hairs.
Uh oh!
There was an error while loading.Please reload this page.
sentinelPrefix:string; | ||
} | ||
// Represents the Code Scanning upload target. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Stray thought. I have seen both line comments and jsdoc comments on your new functions. Is it deliberate that you do not use jsdoc here? If yes, OK.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I think the existing codebase is fairly inconsistent in this regard. I probably just subconsciously mirrored what adjacent definitions do. I'll make this more consistent for my changes.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
thanks! There's one naming nit left, but it is quite minor.
Uh oh!
There was an error while loading.Please reload this page.
4c57370
intomainUh oh!
There was an error while loading.Please reload this page.
This appears to talk about another github api endpoint. Is it documented / will it be documented? |
@jsoref It is not documented. This is part of an internal experiment and so is no use to anyone but us right now. |
Uh oh!
There was an error while loading.Please reload this page.
Follows on from#2917.
This PR modifies the action to produce separate SARIF files for code quality queries (as specified as arguments to the
quality-queries
input) and uploads them to the code quality API. The approach here is that:quality-queries
input #2917 that adds thequality-queries
input to the code scanning configuration file that's used when initialising the database.config-queries.qls
that's generated by the CLI.database run-queries
, and if quality queries are enabled, we explicitly specifyconfig-queries.qls
(which the CLI normally does by default if nothing is specified) + the quality queries.database run-queries
, the existing call todatabase interpret-results
generates a SARIF that only includes results relating to security queries (i.e.config-queries.qls
).database interpret-results
for queries that were specified as arguments to thequality-queries
input (if any). This results in SARIF files for those queries.Notes
.quality.sarif
extension.query-filter
options with respect to code quality results.Merge / deployment checklist