Skip to content

Tighten DSC resource detection in AvoidAlias - #2280

Merged
Christoph Bergmeister (bergmeister) merged 2 commits into
copilot/fix-auto-correct-aliasesfrom
copilot/fix-review-comments
Oct 28, 2026
Merged

Christoph Bergmeister (bergmeister) merged 2 commits into
copilot/fix-auto-correct-aliasesfrom
copilot/fix-review-comments

Conversation

Copilot AI commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

DSC resource detection could suppress diagnostics for executable commands and scan sibling statements for ordinary commands. It also misclassified assignments, scriptblock expressions, and pipeline elements as resource declarations.

  • Constrain resource detection: Defer body lookup until a configuration ancestor is found. Require a standalone command pipeline and a matching resource header for following-line bodies.
  • Preserve executable diagnostics: Treat assignment and expression contexts as boundaries; only accept command-expression blocks when they match a resource body.
  • Add regressions: Cover assigned commands and scriptblocks, parenthesized expressions, following-line property blocks, and piped commands.
Configuration Example {
    Package App {
        Name = 'Example'
    }

    $result = Verb Argument {}
    Verb Argument {} | Out-Null
}

The resource declaration remains ignored; the executable commands retain their Get-Verb diagnostics.

Co-authored-by: bergmeister <9250262+bergmeister@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix code based on review comments Tighten DSC resource detection in AvoidAlias Oct 28, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues were identified in the AvoidAlias DSC resource-detection changes.

No open issues 🎉

What changed in this PR

This PR tightens DSC resource detection in the AvoidAlias rule so executable commands retain diagnostics while resource declarations remain excluded.

Changes:

  • Require a configuration ancestor and a standalone command pipeline before recognizing resource declarations.
  • Treat assignment and parenthesized-expression contexts as boundaries, and validate following-line resource bodies against their headers.
  • Add regression coverage for assignments, scriptblocks, expressions, following-line property blocks, and pipelines.
File Description
Tests/​Rules/​AvoidUsingAlias.tests.ps1 Adds regression tests ensuring executable commands retain alias and implicit-command diagnostics.
Rules/​AvoidAlias.cs Restricts DSC resource detection and validates following-line body associations.

Review effort: Balanced

@bergmeister
Christoph Bergmeister (bergmeister) marked this pull request as ready for review October 28, 2026 15:16
@bergmeister
Christoph Bergmeister (bergmeister) merged commit ee28f10 into copilot/fix-auto-correct-aliases Oct 28, 2026
8 checks passed
@bergmeister
Christoph Bergmeister (bergmeister) deleted the copilot/fix-review-comments branch October 28, 2026 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants