Open joachim-n opened 3 months ago
@joachim-n Thanks for opening this issue.
The docs are actually correct, but I do agree this can be clarified some more.
Basically it comes down to this:
[.]phpcs.xml.dist
, which will allow for it to be automatically picked up by PHPCS, but as stated in the paragraph you quoted above, the file can be called anything and placed anywhere.Both of these are rulesets though and everything that is outlined on the Annotated Ruleset wiki page can be used in either of them. There are, of course, best practices about what directives to add in a standard and what to add in a _project ruleset, but all directives should work just fine in either type of ruleset.
Does that clarify things ?
Thanks for the quick response!
I hadn't realised that a Standard and a ruleset are two different things.
In the docs TOC on the RHS, there's a subheading 'For coding standard creators' and the first page under that is 'Annotated Ruleset'.
I've now found the docs that explain the structure for standards in 'Coding Standard Tutorial', but that's under 'For sniff developers' heading, so I didn't look at that originally!
I hadn't realised that a Standard and a ruleset are two different things.
Well, they are and they aren't 😅. That's what makes it complicated.
For the ruleset file, there is not that much difference, other than in best practices.
The biggest difference, from a technical point of view, is really that a Standard can contain sniffs and can be "installed" and once installed, it can be referenced by name in (other/project) rulesets, including referencing individual sniffs/error codes by name (and setting properties on those etc).
What makes it complicated (terminology-wise) is that a "standard" from a functional point of view can be multiple things.
[.]phpcs.xml.dist
file).ruleset.xml
file.ruleset.xml
) can then be enhanced with custom sniffs, either by contributing those to existing sniff libraries, which are already in use by the (external) standard, or by adding them to the standards package itself. An example of this is the PSR12 standard which is included in PHPCS itself, or for example, the WordPress standard.In the docs TOC on the RHS, there's a subheading 'For coding standard creators' and the first page under that is 'Annotated Ruleset'.
I've now found the docs that explain the structure for standards in 'Coding Standard Tutorial', but that's under 'For sniff developers' heading, so I didn't look at that originally!
For the "Annotated Ruleset" page, typically, the audience would be the people working on standards as described in the second and third bullet above. ("coding standard creators").
For the "Coding Standard Tutorial" page, typically, the audience would be the people working on a standard as described in the fourth bullet ("sniff developers"), though I agree that there is information on that page which also needs to be read by people working on a standard as described in the third bullet.
Does that help explain why things are under certain headers a little better ?
I'll have a think about how to make all of this clearer, but this will probably have to wait until there is a proper website.
I do find these type of questions useful though as input for that. Happy to have your help in writing things up for a website/reviewing content and structure (by the time I get to it).
Describe the bug
The docs page https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki/Annotated-Ruleset says:
I'm not sure this is true.
When I register a path to a standard with the 'installed_paths' config, I find the following:
In other words, this appears to be the required structure:
Versions (please complete the following information)
Additional context
Add any other context about the problem here.
Please confirm
master
branch of PHP_CodeSniffer.