WordPress / WordPress-Coding-Standards

PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions
MIT License
2.56k stars 487 forks source link

Verify method of detecting WordPress.Files.FileName.InvalidTemplateTagFileName #1620

Open pento opened 5 years ago

pento commented 5 years ago

Bug Description

The WordPress.Files.FileName.InvalidTemplateTagFileName sniff incorrectly throws an error on src/wp-includes/template.php. This file is part of the Template subpackage, but doesn't contain template tags.

https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/blob/e73a10e1c12ce07a12c3a8756efc54701458d23b/WordPress/Sniffs/Files/FileNameSniff.php#L213-L242

Minimal Code Snippet

$ vendor/bin/phpcs --sniffs=WordPress.Files.FileName src/wp-includes/template.php
E 1 / 1 (100%)

FILE: src/wp-includes/template.php
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 1 | ERROR | Files containing template tags should have "-template" appended to the end of the file name. Expected template-template.php, but found template.php.
   |       | (WordPress.Files.FileName.InvalidTemplateTagFileName)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

For bugs with fixers: How was the code fixed? How did you expect the code to be fixed?

Error Code

WordPress.Files.FileName.InvalidTemplateTagFileName

Environment

Question Answer
PHP version 7.1.23
PHP_CodeSniffer version 3.3.1
WPCS version 1.0.0
WPCS install type Composer project local

Tested Against develop branch?

jrfnl commented 5 years ago

In that case, either a better way to identify files with template tags needs to be determined or the file could be excluded for that error message with a ruleset exclusion in the Core ruleset:

<rule ref="WordPress.Files.FileName.InvalidTemplateTagFileName">
    <exclude-pattern>src/wp-includes/template\.php$</exclude-pattern>
</rule>
pento commented 5 years ago

https://core.trac.wordpress.org/changeset/44561

🙂

jrfnl commented 5 years ago

In that case, unless someone comes up with a better way for us to determine that a file contains template tags, there is nothing more we can do here.

NielsdeBlaauw commented 5 years ago

In that case, unless someone comes up with a better way for us to determine that a file contains template tags, there is nothing more we can do here.

Seeing that detecting the @subpackage doctag is (going to be) deprecated this issue should probably be renamed to something like Create new method of detecting WordPress.Files.FileName.InvalidTemplateTagFileName.

jrfnl commented 5 years ago

@NielsdeBlaauw Good point, but the PSR 5 & doc handbook both note in favor of a unified package tag: @package Package\Subpackage, so I would expect that once that comes into play, all we'd need to do would be to change the sniff to look at the (end of) the value for the @package instead of the @subpackage tag to solve that.