Skip to content
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

Fix NullReferenceException in AlignAssignmentStatement rule when CheckHashtable is enabled #838

Conversation

bergmeister
Copy link
Collaborator

@bergmeister bergmeister commented Dec 3, 2017

Fix #828
$MyObj | % { @{$_.Name = $_.Value} }' produces a NullReferencException when the PSAlignAssignmentStatement setting CheckHashtable is turned on
The reason for it was because the previous implementation expected the key in a hashtable to not contain more than 1 token expression. A lazy fix would have been to use a continue statement in the GetExtents function instead of returning null. However, the existing algorithm was improved to deal with keys containing expressions consisting of more than 1 token. The fix consists basically in traversing further until the equal statement is reached.

…ue} }' when the PSAlignAssignmentStatement setting CheckHashtable was turned on.

The reason for it was because the previous implementation expected the key in a hashtable to not contain more than 1 token expression.
…until the keyStartOffset and then search for the equal token.

Works mainly fine except that I get an off by one error, which leads to a false positive warning when analysing the settings file provided by issue 828.
Copy link
Member

@JamesWTruher JamesWTruher left a comment

Choose a reason for hiding this comment

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

is there a test for this?

@bergmeister bergmeister reopened this Jan 20, 2018
@bergmeister
Copy link
Collaborator Author

@JamesWTruher Although the issue occured only in a very special scenario and enviroment, I added a test for it. But the underlying problem in the code was just that a function was returning null to something that was IEnumerable.

@JamesWTruher
Copy link
Member

thanks - even though it's an unlikely error, I would rather have an additional test, just from a process perspective.

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.

Invoke-ScriptAnalyzer throws error
2 participants