Private/Resolve-FylgyrSuppressionStatus.ps1

function Resolve-FylgyrSuppressionStatus {
    [CmdletBinding()]
    [OutputType([PSCustomObject[]])]
    param(
        [Parameter(Mandatory)]
        [PSCustomObject[]]$Results,

        [PSCustomObject[]]$Suppressions = @()
    )

    if (-not $Suppressions -or $Suppressions.Count -eq 0) {
        return $Results
    }

    $utcNow = [datetime]::UtcNow
    foreach ($result in $Results) {
        if (-not $result) {
            continue
        }

        if ($result.Status -in @('Pass', 'Error')) {
            continue
        }

        $normalizedResultCheck = ([string]$result.CheckName) -replace '^Test-', ''
        $resourceValue = [string]$result.Resource
        $resourceWithoutLine = if ($resourceValue -match '^(.+):(\d+)$') {
            $Matches[1]
        }
        else {
            $resourceValue
        }

        $matchingRules = [System.Collections.Generic.List[PSCustomObject]]::new()
        foreach ($suppression in $Suppressions) {
            if (-not $suppression) {
                continue
            }

            $suppressionTarget = [string]$suppression.Target
            if (-not [string]::IsNullOrWhiteSpace($suppressionTarget)) {
                $resultTarget = [string]$result.Target
                if ($suppressionTarget -ine $resultTarget) {
                    continue
                }
            }

            $normalizedSuppressionCheck = ([string]$suppression.Check) -replace '^Test-', ''
            if ($normalizedSuppressionCheck -ine $normalizedResultCheck) {
                continue
            }

            $suppressionResource = [string]$suppression.Resource
            $resourceMatches = $false
            if ($suppressionResource -ieq $resourceValue) {
                $resourceMatches = $true
            }
            elseif ($suppressionResource -ieq $resourceWithoutLine) {
                $resourceMatches = $true
            }

            if ($resourceMatches) {
                $matchingRules.Add($suppression)
            }
        }

        if ($matchingRules.Count -eq 0) {
            continue
        }

        $activeRule = $null
        $expiredRule = $null
        foreach ($matchingRule in $matchingRules) {
            if (-not $matchingRule.ExpiresUtc -or $matchingRule.ExpiresUtc -ge $utcNow) {
                $activeRule = $matchingRule
                break
            }

            if (-not $expiredRule) {
                $expiredRule = $matchingRule
            }
        }

        if ($activeRule) {
            $result.Status = 'Suppressed'

            $suppressionNote = "Suppressed by .fylgyr.yml: $($activeRule.Reason)"
            if ($result.Detail -notmatch 'Suppressed by \.fylgyr\.yml:') {
                $result.Detail = "$($result.Detail) $suppressionNote"
            }
            continue
        }

        if ($expiredRule) {
            $expiredNote = "Suppression expired on $(([datetime]$expiredRule.ExpiresUtc).ToString('yyyy-MM-dd')): $($expiredRule.Reason)"
            if ($result.Detail -notmatch 'Suppression expired on') {
                $result.Detail = "$($result.Detail) $expiredNote"
            }
        }
    }

    return $Results
}