Add scorecard to summary and count scorecard warnings

This commit is contained in:
Justin Hutchings
2024-03-12 20:47:25 +00:00
parent ac600387ca
commit 7dc5f537be
2 changed files with 39 additions and 12 deletions
+3 -1
View File
@@ -126,10 +126,13 @@ async function run(): Promise<void> {
config.deny_groups config.deny_groups
) )
const scorecard = await getScorecardLevels(filteredChanges)
summary.addSummaryToSummary( summary.addSummaryToSummary(
vulnerableChanges, vulnerableChanges,
invalidLicenseChanges, invalidLicenseChanges,
deniedChanges, deniedChanges,
scorecard,
config config
) )
@@ -150,7 +153,6 @@ async function run(): Promise<void> {
printDeniedDependencies(deniedChanges, config) printDeniedDependencies(deniedChanges, config)
} }
if (config.show_openssf_scorecard) { if (config.show_openssf_scorecard) {
const scorecard = await getScorecardLevels(filteredChanges)
summary.addScorecardToSummary(scorecard, config) summary.addScorecardToSummary(scorecard, config)
printScorecardBlock(scorecard, config) printScorecardBlock(scorecard, config)
createScorecardWarnings(scorecard, config) createScorecardWarnings(scorecard, config)
+36 -11
View File
@@ -14,22 +14,30 @@ export function addSummaryToSummary(
vulnerableChanges: Changes, vulnerableChanges: Changes,
invalidLicenseChanges: InvalidLicenseChanges, invalidLicenseChanges: InvalidLicenseChanges,
deniedChanges: Changes, deniedChanges: Changes,
scorecard: Scorecard,
config: ConfigurationOptions config: ConfigurationOptions
): void { ): void {
const scorecardWarnings = countScorecardWarnings(scorecard, config)
const licenseIssues = countLicenseIssues(invalidLicenseChanges)
core.summary.addHeading('Dependency Review', 1) core.summary.addHeading('Dependency Review', 1)
if ( if (
vulnerableChanges.length === 0 && vulnerableChanges.length === 0 &&
countLicenseIssues(invalidLicenseChanges) === 0 && licenseIssues === 0 &&
deniedChanges.length === 0 deniedChanges.length === 0 &&
scorecardWarnings === 0
) { ) {
if (!config.license_check) { const issueTypes = [
core.summary.addRaw(`${icons.check} No vulnerabilities found.`) config.vulnerability_check ? 'vulnerabilities' : '',
} else if (!config.vulnerability_check) { config.license_check ? 'license issues' : '',
core.summary.addRaw(`${icons.check} No license issues found.`) config.show_openssf_scorecard ? 'OpenSSF Scorecard issues' : ''
]
if (issueTypes.filter(Boolean).length === 0) {
core.summary.addRaw(`${icons.check} No issues found.`)
} else { } else {
core.summary.addRaw( core.summary.addRaw(
`${icons.check} No vulnerabilities or license issues found.` `No ${issueTypes.filter(Boolean).join(' or ')} found.`
) )
} }
@@ -65,11 +73,31 @@ export function addSummaryToSummary(
deniedChanges.length deniedChanges.length
} package(s) denied.` } package(s) denied.`
] ]
: []),
...(config.show_openssf_scorecard && scorecardWarnings > 0
? [
`${checkOrWarnIcon(scorecardWarnings)} ${scorecardWarnings ? scorecardWarnings : 'No'} packages with OpenSSF Scorecard issues.`
]
: []) : [])
]) ])
.addRaw('See the Details below.') .addRaw('See the Details below.')
} }
function countScorecardWarnings(
scorecard: Scorecard,
config: ConfigurationOptions
): number {
return scorecard.dependencies.reduce(
(total, dependency) =>
total +
(dependency.scorecard?.score &&
dependency.scorecard?.score < config.warn_on_openssf_scorecard_level
? 1
: 0),
0
)
}
export function addChangeVulnerabilitiesToSummary( export function addChangeVulnerabilitiesToSummary(
vulnerableChanges: Changes, vulnerableChanges: Changes,
severity: string severity: string
@@ -267,10 +295,7 @@ export function addScorecardToSummary(
// Set the icon based on the overall score value // Set the icon based on the overall score value
let overallIcon = '' let overallIcon = ''
if ( if (dependency.scorecard?.score) {
dependency.scorecard?.score !== undefined &&
dependency.scorecard?.score !== null
) {
overallIcon = overallIcon =
dependency.scorecard?.score < config.warn_on_openssf_scorecard_level dependency.scorecard?.score < config.warn_on_openssf_scorecard_level
? ':warning:' ? ':warning:'