-
Notifications
You must be signed in to change notification settings - Fork 36
fix(scripts): ensure reliable array count operations in linting and security scripts #395
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
Conversation
…ecurity scripts - wrap array assignments with @() in PSScriptAnalyzer, YamlLint, and Markdown-Link-Check - add array coercion to count checks in Validate-MarkdownFrontmatter - fix array handling in Test-DependencyPinning and Test-SHAStaleness scripts 🔧 - Generated by Copilot
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #395 +/- ##
==========================================
+ Coverage 52.44% 61.45% +9.01%
==========================================
Files 17 17
Lines 3110 3111 +1
==========================================
+ Hits 1631 1912 +281
+ Misses 1479 1199 -280
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
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 fixes PowerShell array handling issues across linting and security validation scripts by applying defensive array coercion with @(). The changes prevent "property 'Count' cannot be found" errors that occur when pipeline operations return null or single items instead of arrays, particularly affecting functions like Get-ChangedFilesFromGit and Get-FilesRecursive.
Changes:
- Added
@()array coercion to function return values and count operations across all linting scripts (PSScriptAnalyzer, YamlLint, Markdown-Link-Check, Validate-MarkdownFrontmatter) - Enhanced array handling in security validation scripts (Test-DependencyPinning, Test-SHAStaleness) for violation collections, grouping operations, and measure-object counts
- Initialized
$script:StaleDependenciesas an empty array in Test-SHAStaleness.ps1
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/security/Test-SHAStaleness.ps1 | Added array coercion to 11 count operations, tool staleness detection, and initialized StaleDependencies array |
| scripts/security/Test-DependencyPinning.ps1 | Added array coercion to 5 violation collection and measure-object operations |
| scripts/linting/Validate-MarkdownFrontmatter.ps1 | Wrapped Get-ChangedMarkdownFileGroup results and count checks with @() |
| scripts/linting/Markdown-Link-Check.ps1 | Added array coercion to Get-MarkdownTarget return value and count check |
| scripts/linting/Invoke-YamlLint.ps1 | Wrapped Get-ChangedFilesFromGit, Get-ChildItem results, and count operations with @() |
| scripts/linting/Invoke-PSScriptAnalyzer.ps1 | Added array coercion to Get-ChangedFilesFromGit, Get-FilesRecursive results, and all count operations in summary |
… environments - implement tests for fixture exclusion filtering in Markdown-Link-Check - validate error handling and output formatting for GitHub Actions - ensure array coercion works correctly in main execution block 🔒 - Generated by Copilot
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
Copilot reviewed 10 out of 10 changed files in this pull request and generated no new comments.
Description
This PR fixes PowerShell array handling issues in linting and security validation scripts by ensuring array assignments and count operations use proper array coercion with
@(). These changes prevent potential errors when pipeline operations return null or single items instead of arrays.fix(linting): wrapped array assignments in Invoke-PSScriptAnalyzer, Invoke-YamlLint, and Markdown-Link-Check with
@()to ensure consistent array behaviorGet-ChangedFilesFromGitandGet-FilesRecursive.Countproperty accesses for reliable zero-count checksfix(linting): added array coercion to count checks in Validate-MarkdownFrontmatter
Get-ChangedMarkdownFileGroupresult with@()for consistent array handlingfix(security): improved array handling in Test-DependencyPinning script
@()wrapping to violation collection and grouping operationsfix(security): enhanced array coercion in Test-SHAStaleness script
@()for reliable behavior$script:StaleDependenciesas empty arrayRelated Issue(s)
Fixes #394
Type of Change
Select all that apply:
Code & Documentation:
Infrastructure & Configuration:
AI Artifacts:
prompt-builderagent and addressed all feedback.github/instructions/*.instructions.md).github/prompts/*.prompt.md).github/agents/*.agent.md)Other:
.ps1,.sh,.py)Testing
Tested by running the affected scripts with various file count scenarios:
All scripts now handle edge cases consistently without null reference errors.
Checklist
Required Checks
AI Artifact Contributions
/prompt-analyzeto review contributionprompt-builderreviewRequired Automated Checks
The following validation commands must pass before merging:
npm run lint:mdnpm run spell-checknpm run lint:frontmatternpm run lint:md-linksnpm run lint:psSecurity Considerations
Additional Notes
These changes follow PowerShell best practices for defensive array handling. The
@()operator ensures that pipeline results are always treated as arrays, even when they return null or single items, preventing runtime errors in count operations and foreach loops.🔧 - Generated by Copilot