Skip to content

Conversation

@jrfnl
Copy link
Member

@jrfnl jrfnl commented Nov 6, 2025

New sniff to enforce a fixed number of spaces on the inside of attribute block brackets. By default, the sniff expects 0 spaces, but this is configurable via a custom ruleset using the spaces property.
Also by default, new lines will not be allowed. This setting can also be toggled by changing the ignoreNewlines property in a custom ruleset.

Additionally, when ignoreNewlines is set to true, the sniff will also check there are no blank lines at the start or end of the attribute block.

Note: the $spacing and $ignoreNewlines property names are chosen to be in line with commonly used property names as used in PHPCS itself.

This sniff can be used with the default settings to address the following rule from PER-CS:

12.1 Basics
...
Attribute names MUST immediately follow the opening attribute block indicator #[ with no space.

The closing attribute block indicator ] MUST follow the last character of the attribute name or the closing ) of its argument list, with no preceding space.

Ref: https://www.php-fig.org/per/coding-style/#121-basics

Includes fixers.
Includes metrics.
Includes unit tests.
Includes documentation.

Fixes #386

New sniff to enforce a fixed number of spaces on the inside of attribute block brackets.
By default, the sniff expects `0` spaces, but this is configurable via a custom ruleset using the `spaces` property.
Also by default, new lines will not be allowed. This setting can also be toggled by changing the `ignoreNewlines` property in a custom ruleset.

Additionally, when `ignoreNewlines` is set to `true`, the sniff will also check there are no blank lines at the start or end of the attribute block.

Note: the `$spacing` and `$ignoreNewlines` property names are chosen to be in line with commonly used property names as used in PHPCS itself.

This sniff can be used with the default settings to address the following rule from PER-CS:

> 12.1 Basics
> ...
> Attribute names MUST immediately follow the opening attribute block indicator `#[` with no space.
>
> The closing attribute block indicator `]` MUST follow the last character of the attribute name or the closing `)` of its argument list, with no preceding space.

Ref: https://www.php-fig.org/per/coding-style/#121-basics

Includes fixers.
Includes unit tests.
Includes documentation.

Fixes 386
@jrfnl
Copy link
Member Author

jrfnl commented Nov 11, 2025

Rebased without changes to get a passing build against the new CI requirements.

@jrfnl jrfnl force-pushed the feature/386-new-universal-attributes-bracketspacing-sniff branch from 7e4d7cf to a668bf2 Compare November 11, 2025 01:33
@jrfnl jrfnl merged commit c83ef45 into develop Nov 11, 2025
79 checks passed
@jrfnl jrfnl deleted the feature/386-new-universal-attributes-bracketspacing-sniff branch November 11, 2025 01:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Attributes: sniff to normalize spacing on the inside of attribute brackets

2 participants