Skip to content

Instantly share code, notes, and snippets.

Avatar
🤧
Code sniffing

Greg Sherwood gsherwood

🤧
Code sniffing
View GitHub Profile
@gsherwood
gsherwood / zf2.txt
Last active Aug 29, 2015
Example output from PHP_CodeSniffer's Information report (--report=info)
View zf2.txt
Running with a single standard will allow sniffs in that standard to add metrics about the source code.
This is a good way to get a feel for how a code base is deviating from a standard and ways you can
tweak the standard to more closely match what the majority of developers are doing.
The report output is still very rough, so read output like this:
Function openning brace placement: new line [10431/10598, 98.42%]
same line => 167 (1.58%)
as this:
The majority of function openning braces are placed on a new line (98.42%).
@gsherwood
gsherwood / 21-Feb-2014.json
Last active Aug 29, 2015
Comparison of coding standards across some well known PHP projects
View 21-Feb-2014.json
{
"Arrays":{
"Array keyword case":{
"sniffs":{
"0":"Squiz.Arrays.ArrayDeclaration"
},
"total":94079,
"values":{
"lower":94077,
"upper":2
View mystandard.xml
<?xml version="1.0"?>
<ruleset name="PSR2">
<description>The PSR-2 coding standard.</description>
<!-- PHP code MUST use the long <?php ?> tags or the short-echo <?= ?> tags; it MUST NOT use the other tag variations. -->
<rule ref="Generic.PHP.DisallowShortOpenTag.EchoFound">
<severity>0</severity>
</rule>
<!-- PHP code MUST use only UTF-8 without BOM. -->
@gsherwood
gsherwood / temp.php
Created Dec 18, 2014
phpcbf temp.php --standard=PSR2 --tab-width=4
View temp.php
<?php
namespace I18nMessages\Test\I18n;
use Cake\TestSuite\TestCase;
use I18nMessages\I18n\DbMessagesLoader;
/**
* Tests for DbMessagesLoader
*/
class DbMessagesLoaderTest extends TestCase
@gsherwood
gsherwood / SearchStringSniff.php
Created Jan 12, 2015
Example sniff to find a string with specific content
View SearchStringSniff.php
<?php
/**
* Generic_Sniffs_Strings_SearchStringSniff.
*
* PHP version 5
*
* @category PHP
* @package PHP_CodeSniffer
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
@gsherwood
gsherwood / after.php
Created Jul 11, 2015
PHPCBF if/elseif/else test
View after.php
<?php
if ($foo) {
echo 'foo';
} elseif ($bar) {
echo 'bar';
} else {
echo 'else';
}
View output
$ cat temp.php
<?php
class Client extends GuzzleClient implements ClientInterface {
/**
* {@inheritdoc}
*/
public function authenticatedRequest($method = 'GET', $url = null, UserInterface $user, $options = []) {
$duration = isset($options['timeout']) ? $options['timeout'] : NULL;
$options['query']['token'] = $user->acquireToken($duration);
@gsherwood
gsherwood / gist:6773172
Last active Dec 24, 2015
PHP_CodeSniffer (phpcs-fixer branch) run over ZF2. Shows all existing errors (warnings are muted) and which ones can be fixed automatically using phpcbf (docs: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Fixing-Errors-Automatically)
View gist:6773172
$ php scripts/phpcs ../zf2/library/Zend/ --standard=PSR2 -p --report=source -ns
PHP CODE SNIFFER VIOLATION SOURCE SUMMARY
--------------------------------------------------------------------------------
SOURCE COUNT
--------------------------------------------------------------------------------
[x] PSR2.Methods.FunctionCallSignature.Indent 328
[ ] PSR2.Methods.FunctionCallSignature.MultipleArguments 276
[x] PSR2.Methods.FunctionCallSignature.CloseBracketLine 248
[x] Squiz.WhiteSpace.ScopeClosingBrace.ContentBefore 230
@gsherwood
gsherwood / gist:8275236
Last active Feb 17, 2016
Possible fix for bug #20151 : Problem handling "if(): ... else: ... endif;" syntax
View gist:8275236
$ git diff
diff --git a/CodeSniffer/File.php b/CodeSniffer/File.php
index f45e307..e629fed 100644
--- a/CodeSniffer/File.php
+++ b/CodeSniffer/File.php
@@ -1446,7 +1446,7 @@ class PHP_CodeSniffer_File
if (PHP_CODESNIFFER_VERBOSITY > 1) {
$type = $tokens[$i]['type'];
$content = str_replace($eolChar, '\n', $tokens[$i]['content']);
- echo "\tStart scope map at $i: $type => $content".PHP_EOL;
@gsherwood
gsherwood / JSTokenizer.php
Created Nov 21, 2016
Using PHP_CodeSniffer to tokenize a JS file
View JSTokenizer.php
<?php
namespace MyCustomProject;
use PHP_CodeSniffer\Runner;
use PHP_CodeSniffer\Config;
use PHP_CodeSniffer\Files\DummyFile;
// Include the PHPCS autoloader, however you need to.
require_once __DIR__.'/autoload.php';