To understand how rules extension works in Sonar, please refer to the Extending Coding Rules documentation.
Extending PHP_Codesniffer Rules
PHP_CodeSniffer is built on an extensible architecture where you can define you own rules.
To do so, you just have to create your own rules.xml file following the below format:
This file must be copied in the directory $SONAR_HOME/extensions/rules/php_codesniffer_rules/. You have to restart your Sonar server to make it available for PHP profiles.
The value of the "key" attribute is a combination of different elements: <standard_folder>.<sniff_subfolder>.<sniff_file_without_Sniff_suffix>.<error_name>.
For instance, for the given key above ("PEAR.Commenting.FileComment.TagIndent"):
- "
PEAR" is the folder found in the "Standards" directory of PHPCodeSniffer install directory - "
Commenting" is the folder found in the "Sniffs" directory of the "PEAR" folder - "
FileComment" is the name of the PHP file "FileCommentSniff.php" for which "Sniff.php" was removed - "
TagIndent" is the name of the error that can be found in "FileCommentSniff.php" file
Extending PHPMD Rules
Extending PHPMD works the same way as PHP_CodeSniffer, except that you have to copy your file containing your custom violations in $SONAR_HOME/extensions/rules/phppmd_rules/
This XML file must look like the following example:

