Skip to content

Settings param cannot be set to $_ inside of a foreach-object loop #807

Open

Description

When the value of the -Settings parameter is set to $_ inside of a foreach-object loop, PSScriptAnalyzer is unable to find the settings file.

Steps to reproduce:
Create a file that violates a rule that is only checked if a particular setting is triggered.
IE:

if ($true)
{
    Write-Output 'Something'
}

This code will throw errors if -Settings is set to CodeFormattingStroustrup but not if -Settings it is omitted.

The following command returns warnings.
invoke-scriptanalyzer -path C:\files\ax.ps1 -Settings 'CodeFormattingStroustrup'
But this one does not.
'CodeFormattingStroustrup' | % { invoke-scriptanalyzer -path C:\files\ax.ps1 -Settings $_ }

Using -Verbose on the non-working example shows that PSScriptAnalyzer cannot find a settings file.

This occurs on version 1.15.0 of PSScriptAnalyzer.

Screenshot
image

Activity

  1. kapilmb commented on Aug 1, 2017

    @kapilmb

    Probably something is wrong with the settings parameter processing. The following, however, seems to work as expected:

    'CodeFormattingStroustrup' | % { invoke-scriptanalyzer -path C:\files\ax.ps1 -Settings "$_" }
  2. bergmeister commented on Mar 11, 2018

    @bergmeister
    Collaborator

    @ThmsRynr This still reproes in 1.16.1 and in the latest version of development branch. There have been recent improvements to the -Setting parameter object parsing to allow it parsing expressions that resolve to a string at the end (in BeginProcessing, the object is not a string yet but a PSObject), therefore the improvement also needs to take those built in settings into account as well. I opened a PR with a fix for it, I just need to add a test and then we are ready to go (and hopefully this makes it into the next upcoming version)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions