Skip to content

Instantly share code, notes, and snippets.

View gsherwood's full-sized avatar
🤧
Code sniffing

Greg Sherwood gsherwood

🤧
Code sniffing
View GitHub Profile
@gsherwood
gsherwood / zf2.txt
Last active August 29, 2015 13:56
Example output from PHP_CodeSniffer's Information report (--report=info)
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 August 29, 2015 13:56
Comparison of coding standards across some well known PHP projects
{
"Arrays":{
"Array keyword case":{
"sniffs":{
"0":"Squiz.Arrays.ArrayDeclaration"
},
"total":94079,
"values":{
"lower":94077,
"upper":2
<?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 December 18, 2014 21:46
phpcbf temp.php --standard=PSR2 --tab-width=4
<?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 January 12, 2015 21:28
Example sniff to find a string with specific content
<?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 July 11, 2015 00:05
PHPCBF if/elseif/else test
<?php
if ($foo) {
echo 'foo';
} elseif ($bar) {
echo 'bar';
} else {
echo 'else';
}
$ 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 December 24, 2015 08:49
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)
$ 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 February 17, 2016 18:44
Possible fix for bug #20151 : Problem handling "if(): ... else: ... endif;" syntax
$ 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 November 21, 2016 22:02
Using PHP_CodeSniffer to tokenize a JS file
<?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';