PHPCS

Personal documentation for the sniffs available in the PHP Code Sniffer coding standards to help build an own rulesets and search for error explanations.


The simple bash script created for personal needs to list all the sniffs available in the coding standards provided by PHP_Code_Sniffer. It iterates through the standards, list sniffs with -e attribute, exctract sniff codes, and generates docs for each of them.

#!/bin/bash

STANDARDS=('Generic' 'Pear' 'PSR1' 'PSR12' 'PSR2' 'Squiz' 'Zend', 'WordPress')
output=""

for standard in "${STANDARDS[@]}"; do
  output+="# Standard: $standard"
  output+=$'\n\n'

  list=$(vendor/bin/phpcs --standard=$standard -e)
  codes=$(echo "$list" | grep -E '^[[:space:]]{2,}[A-Za-z0-9.]+' | sed 's/^[[:space:]]*//')

  IFS=$'\n'
  for code in $codes; do
    stnd=$(echo "$code" | cut -d'.' -f1)
    category=$(echo "$code" | cut -d'.' -f2)
    sniff=$(echo "$code" | cut -d'.' -f3)
    url="https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/src/Standards/${stnd}/Sniffs/${category}/${sniff}Sniff.php"

    output+=$'\n\n'
    output+="\`$code\` | [[ref]($url)]"
    output+=$(vendor/bin/phpcs --standard=$standard --generator=markdown --sniffs="$code")
    output+=$'\n\n---\n\n'
  done
done

output=$(echo "$output" | sed -E "s/Documentation generated on [[:alpha:]]+, [0-9]+ [[:alpha:]]+ [0-9]+ [0-9]+:[0-9]+:[0-9]+ \+[0-9]+ by \[PHP_CodeSniffer [0-9]+\.[0-9]+\.[0-9]+\](.*)//")
output=$(echo "$output" | sed -E "s/# (Generic|Pear|PSR1|PSR12|PSR2|Squiz|Zend|WordPress) Coding Standard//")
output=$(echo "$output" | sed '/^$/N;/^\n$/D')
output=$(echo "$output" | sed '/^##/d')

echo "$output"
./docs.sh > docs.md

https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/317

Feedback

How satisfied you are after reading this article?