Set-StrictMode -Version Latest
|
$ErrorActionPreference = 'Stop'
|
|
function Invoke-AnaSemiRepair3StaticChecks {
|
[CmdletBinding()]
|
param(
|
[Parameter(Mandatory)][string]$ModulePath,
|
[Parameter(Mandatory)][string]$ValidationPath
|
)
|
$moduleText = [IO.File]::ReadAllText($ModulePath, [Text.UTF8Encoding]::new($false, $true))
|
$validationText = [IO.File]::ReadAllText($ValidationPath, [Text.UTF8Encoding]::new($false, $true))
|
$checks = @(
|
[ordered]@{ id='S01-STRICTMODE'; expected='present'; actual=$(if($moduleText.Contains('Set-StrictMode -Version Latest')){'present'}else{'absent'}) },
|
[ordered]@{ id='S02-EXPORT-CONVERT'; expected='present'; actual=$(if($moduleText.Contains('ConvertTo-AnaSemiAuthorizationWindow')){'present'}else{'absent'}) },
|
[ordered]@{ id='S03-EXPORT-TEST'; expected='present'; actual=$(if($moduleText.Contains('Test-AnaSemiAuthorizationWindow')){'present'}else{'absent'}) },
|
[ordered]@{ id='S04-EXPORT-SELECTOR'; expected='present'; actual=$(if($moduleText.Contains('Select-AnaSemiExactRelatedProcess')){'present'}else{'absent'}) },
|
[ordered]@{ id='S05-EXPORT-INVOKE'; expected='present'; actual=$(if($moduleText.Contains('Invoke-AnaSemiPreconsumptionPreflight')){'present'}else{'absent'}) },
|
[ordered]@{ id='S06-GATE-WAIT0'; expected='present'; actual=$(if($moduleText.Contains('$InvocationGate.Wait(0)')){'present'}else{'absent'}) },
|
[ordered]@{ id='S07-NO-GATE-RELEASE'; expected='absent'; actual=$(if($moduleText.Contains('.Release(')){'present'}else{'absent'}) },
|
[ordered]@{ id='S08-DATETIMEOFFSET'; expected='present'; actual=$(if($moduleText.Contains('[DateTimeOffset]::ParseExact')){'present'}else{'absent'}) },
|
[ordered]@{ id='S09-CREATENEW'; expected='present'; actual=$(if($validationText.Contains('[IO.FileMode]::CreateNew')){'present'}else{'absent'}) },
|
[ordered]@{ id='S10-NO-MYSQL'; expected='absent'; actual=$(if(($moduleText+$validationText) -match '(?i)mysql|config_editor|SHOW GRANTS|CURRENT_USER'){'present'}else{'absent'}) },
|
[ordered]@{ id='S11-NO-LEGACY-ROUTE'; expected='absent'; actual=$(if(($moduleText+$validationText) -match '(?i)mbx send|project inbox|session bridge|history fallback'){'present'}else{'absent'}) },
|
[ordered]@{ id='S12-NO-NETWORK'; expected='absent'; actual=$(if(($moduleText+$validationText) -match '(?i)Invoke-WebRequest|Invoke-RestMethod|HttpClient|WebClient'){'present'}else{'absent'}) }
|
)
|
$rows = foreach($c in $checks) {
|
$match = [string]$c.actual -ceq [string]$c.expected
|
[ordered]@{actual=[string]$c.actual;check_id=[string]$c.id;expected=[string]$c.expected;status=$(if($match){'MATCH'}else{'MISMATCH'});stop_code=$(if($match){$null}else{'STATIC_CHECK_MISMATCH'})}
|
}
|
return ,@($rows)
|
}
|