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?