Update compatibility profiles for PowerShell 7 by rjmholt · Pull Request #1429 · PowerShell/PSScriptAnalyzer

@rjmholt

PR Summary

  • Adds compatibility profiles for PS 7 and 6.2
  • Moves the 6.1 profiles to the optional folder
  • Port an old fix for alias collection that never made it in, where we get aliases that don't have any declaring module (ones declared in the initial session state)
  • Fix the race condition in query objects causing intermittent test failures (I finally got a local repro) by making query initialisation eager
  • Make compatibility rules supressable by their particular command/parameter, type/member names
  • Add tests for PS 7 profiles

PR Checklist

@rjmholt

TylerLeonhardt

The rule can also be suppressed only for particular types:

```powershell
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseCompatibleTypes", "", Target="System.Management.Automation.Security.SystemPolicy")]

Choose a reason for hiding this comment

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

Shouldn't this be?

[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseCompatibleTypes", "", Target="System.Management.Automation.Security.SystemPolicy")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseCompatibleTypes", "System.Management.Automation.Security.SystemPolicy")]

bergmeister

Choose a reason for hiding this comment

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

Looks good but 1 or 2 minor comments probably need to be addressed. Also: I'd rather remove the 6.1 profiles as it's usage is unsupported anyway as it heavily adds to the installation payload of PSSA. By the time PSSA ships, even 6.2 will only have a few months support left.
CI needs to be fixed though of course.

@rjmholt

CI needs to be fixed though of course.

Yeah it looks like this reflects a legitimate bug... I'll need to look into it

@rjmholt

@bergmeister I've got this working now, if you've got time to take a look

@rjmholt

bergmeister

@rjmholt

bergmeister

Choose a reason for hiding this comment

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

Awesome, thanks

TylerLeonhardt

And also suppressed only for parameters:

```powershell
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseCompatibleCommands", "Import-Module/FullyQualifiedName")]

Choose a reason for hiding this comment

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

❤️