Sunday, June 08, 2008

How to customise PHP_CodeSniffer (writing custom coding standards)

PHP_CodeSniffer is a PEAR package which detects potential coding problems and enforces your style guide.

The default is the PEAR coding standard, but you can easily change that.

pear install PHP_CodeSniffer
pear install PEAR_PackageFileManager_Cli

Second, create a new folder somewhere -

Third, you'll want to make a
in that directory.

It should look somewhat like:

if (class_exists('PHP_CodeSniffer_Standards_CodingStandard', true) === false) {
throw new PHP_CodeSniffer_Exception('Class PHP_CodeSniffer_Standards_CodingStandard not found');

class PHP_CodeSniffer_Standards_Foo_FooCodingStandard extends PHP_CodeSniffer_Standards_CodingStandard

public function getIncludedSniffs()
return array(

}//end getIncludedSniffs()

}//end class

Spend a little time searching for the sniffs you want to use - some can be a huge help, or a huge pain.

Next, use the CLI tool
to create a package.xml in
. You want to set the base install directory to PHP/; and you want to watch out for case senstivity and the like.

Once you have your package.xml; you just want to type
pear package
in the same directory - if it works, you should have a new .tgz with you can install -
pear install PHP_CodeSniffer_Standards_Foo-0.0.1.tgz

Testing it:
phpcs -i
should show your new coding standard listed here if everything is working correctly.

To set it to your default coding standard:
phpcs --config-set default_standard Foo

What next?
You could set it up to run via Cron across your entire project, or you could integrate it with an SVN post commit hook.
Post a Comment