-
-
Notifications
You must be signed in to change notification settings - Fork 73
Squiz/MemberVarSpacing: bug fix - handling of blank lines in pre-amble #840
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
Squiz/MemberVarSpacing: bug fix - handling of blank lines in pre-amble #840
Conversation
The `Squiz.WhiteSpace.MemberVarSpacing` sniff intends to flag blank lines between a property docblock and the property declaration. However, as things are, there are - IMO - two bugs in the logic for this: Given a code block which looks like this: ```php class MultipleBlankLinesInPreAmble { /** * Docblock. */ #[MyAttribute] #[MyOtherAttribute] public $prop; } ``` There will be only one error and it will read: ``` [x] Expected 0 blank lines after member var comment; 6 found (Squiz.WhiteSpace.MemberVarSpacing.AfterComment) ``` This is confusing as there are not 6 blank lines between the end of the docblock and the property, but four blank lines and two attribute lines. What I would expect would be for the sniff to: a) Throw a separate error for each (set of) blank lines found. b) For the error message to correctly reflect the number of blank lines found for each error. > Note: while in PHPCS this gets confusing, the fixer already fixes this correctly. This commit changes the `AfterComment` error to comply with the above expectations Includes test, though there are also some pre-existing tests which show this issue and for which the behaviour is changed (error lines: 342 and 353). _Note: while it will still be messy, it may be easier to review this PR while ignoring whitespace changes._ Fixes squizlabs/PHP_CodeSniffer 3594
While blank lines between the docblock and the property declaration should be removed, blank lines _within_ an attribute should be ignored as that's for a sniff dealing with attribute spacing to deal with and is outside of the scope of this sniff. Fixed now. Includes updated test.
|
||
// phpcs can fix this but not the next one | ||
#[SingleAttribute] | ||
public $property1; | ||
|
||
#[SingleAttribute] | ||
public $property2; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What hasn't been fixed for the second property here? Does the comment need to be updated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See: squizlabs/PHP_CodeSniffer#3594
I've updated the comment now. Is this better ?
Description
Squiz/MemberVarSpacing: bug fix - handling of blank lines in pre-amble
The
Squiz.WhiteSpace.MemberVarSpacing
sniff intends to flag blank lines between a property docblock and the property declaration.However, as things are, there are - IMO - two bugs in the logic for this:
Given a code block which looks like this:
There will be only one error and it will read:
This is confusing as there are not 6 blank lines between the end of the docblock and the property, but four blank lines and two attribute lines.
What I would expect would be for the sniff to:
a) Throw a separate error for each (set of) blank lines found.
b) For the error message to correctly reflect the number of blank lines found for each error.
This commit changes the
AfterComment
error to comply with the above expectationsIncludes test, though there are also some pre-existing tests which show this issue and for which the behaviour is changed (error lines: 342 and 353).
Note: while it will still be messy, it may be easier to review this PR while ignoring whitespace changes.
Fixes squizlabs/PHP_CodeSniffer#3594
Squiz/MemberVarSpacing: bug fix - don't remove blank attribute lines
While blank lines between the docblock and the property declaration should be removed, blank lines within an attribute should be ignored as that's for a sniff dealing with attribute spacing to deal with and is outside of the scope of this sniff.
Fixed now.
Includes updated test.
Suggested changelog entry
Squiz.WhiteSpace.MemberVarSpacing: more accurate reporting on blank lines in the property "pre-amble" (i.e. docblock, attributes).
Related issues/external references
Note: this PR is part of a series of PRs to fix various issues in this sniff...
Related to #152
Types of changes