Description
Repost from squizlabs/PHP_CodeSniffer#2188:
PR #1433 added an XML schema file to the repo and while people can use it with external tools to validate their custom rulesets/external standards, I think it could be a nice feature to offer ruleset validation against the XSD file from within PHPCS itself.
I'm thinking a
--validate
command line option.
- When called like
phpcs --validate=filename.xml
it would validate that specific file.- When called like
phpcs --validate=*/Standards/*/ruleset.xml
it would validate all files which match the pattern.- When called without a value, like
phpcs --validate
, it would look for an[.]phpcs.xml[.dist]
file in the same way PHPCS does for a normal run and validate such a file if found.- When called in combination with other command line options, like for a normal run, it would validate the ruleset(s) and then continue to the normal PHPCS run, providing the ruleset(s) are valid.
Validation could be done using the XMLReader PHP extension which is shipped with PHP by default and enabled by default since PHP 5.1.2.
There are caveats regarding whetherlibxml
is compiled with PHP with schema support, but in case it's not, I suppose an error message could be thrown saying so.While the initial implementation I'm proposing would be a command-line option, I imagine that ruleset validation could possibly become a standard part of the ruleset processing as of PHPCS 4.0.
Opinions ?
Inspired by:
- PHPUnit validating the
phpunit.xml
file before each run since PHPUnit 7.2 - see Implements #3048 - XML configuration is validated against the schema sebastianbergmann/phpunit#3066.- Issue #2151.
- Questions I've seen (elsewhere) about the new array format.
- Ruleset errors I've made myself 😜
Related to and could partially replace #2187.