Skip to content

Fix NullReferenceException in AlignAssignmentStatement rule when CheckHashtable is enabled #838

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

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
Contributor

@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
Contributor

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

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Invoke-ScriptAnalyzer throws error
2 participants