0; $i < 0; $i >= 0; $i <= 0; $i = 0; $i += 0; $i -= 0; $i == 0; $i === 0; $i !== 0; $i != 0; $i > 0; $i < 0; $i >= 0; $i <= 0; $i = 0; $i += 0; $i -= 0; $i == 0; $i == 0; $i != 0; $i > 0; $i < 0; $i >= 0; $i <= 0; $i += 0; $i -= 0; $i == 0; $i === 0; $i !== 0; $i != 0; $i > 0; $i < 0; $i >= 0; $i <= 0; $i = 0; $i += 0; $i -= 0; $i == 0; $i === 0; $i !== 0; $i != 0; $i > 0; $i < 0; $i >= 0; $i <= 0; // Arihtmetic operators, too. $i = 1 + 1; $i = 1 - 1; $i = 1 / 2; $i = 1 * 1; // Unary operators must not have a space. $i--; --$i; $i++; ++$i; $i = -1; $i = +1; $i = -1; $i = +1; array('i' => -1); array('i' => +1); $i = (1 == -1); $i = (1 === -1); $i = (1 == +1); $i = (1 === +1); range(-50, -45); range(-50, -45); $i[0] + 1; $x->{$i} + 1; !$x; !($x + $y); // Casting must have one space. (int) $i; (int) $i; // Last item of a multiline array has to be followed by a // comma. On inline arrays not! $a = array('1', '2', '3'); $a = array( '1', '2', '3', ); $a = array('1', '2', array('3')); $a = array('1', '2', array('3')); $a = array('1', '2', array('3')); $a = array('1', '2', array('3')); $a = array('1', '2', array( '3', ), ); $a = array( '1', '2', array('3'), ); // Missing comma on the last item. $field = array( 'field_name' => 'test_text', 'type' => 'text', ); // Array white space style. $a = array('1'); $a = array('1'); $a = array('1'); $a = array('1', '2'); // Wrong usage of array keyword. $a = array('1'); $a = array('x'); // Array indentation error. $a = array( 'x' => 'y', ); // Single line array declaration is too long. $page_options = array('home' => t('Front Page'), 'all' => t('All Pages'), 'list' => t('List Pages')); // Item assignment operators must be prefixed and followed by a space. $a = array('one' => '1'); $a = array('one' => '1'); $a = array('one' => '1'); foreach ($a as $key => $value) { } foreach ($a as $key => $value) { } foreach ($a as $key => $value) { } // "as" keyword must be lower case. foreach ($a as $key => $value) { } // Elseif and else must have a newline after the curly braces of the former condition. if (TRUE || TRUE) { $i; } elseif (TRUE && TRUE) { $i; } else { $i; } // Elseif and else must have a newline after the curly braces of the former condition. if (TRUE || TRUE) { $i; } elseif (TRUE && TRUE) { $i; } else { $i; } // If conditions have a space before and after the condition parenthesis. if (TRUE || TRUE) { $i; } elseif (TRUE && TRUE) { $i; } else { $i; } // Else if is not allowed. if (TRUE) { $i; } elseif (TRUE) { $i; } // White spaces before and after the condition are not allowed. if (TRUE) { $i; } elseif (TRUE) { $i; } // Break has to be intended 2 spaces. switch ($condition) { case 1: $i; break; case 2: $i; break; } // Missing Spaces. switch ($condition) { default: $i; } switch ($condition) { default: $i; } switch ($condition) { default: $i; } // Missing space after "do". do { $i; } while ($condition); // Missing space before "while". do { $i; } while ($condition); // Missing space after "while". do { $i; } while ($condition); // For loop formatting. // For loop formatting. for ($i = 0; $i < 5; $i++) { } for ($i = 0; $i < 5; $i++) { } for ($i = 0; $i < 5; $i++) { } for ($i = 0; $i < 5; $i++) { } for ($i = 0; $i < 5; $i++) { } // Control structure keywords must be lower case. if (TRUE) { foreach ($a as $key => $value) { try { $value++; } catch (Exception $e) { } } } /** * Short description. * * We use doxygen style comments. * What's sad because eclipse PDT and * PEAR CodeSniffer base on phpDoc comment style. * Makes working with drupal not easier :| * * @param $field1 * Doxygen style comments * @param $field2 * Doxygen style comments * @param $field3 * Doxygen style comments * * @return * Doxygen style comments */ function foo($field1, $field2, $field3 = NULL) { $system["description"] = t("This module inserts funny text into posts randomly."); /** * Inline doc blocks are not allowed. */ return $system[$field]; } /** * Use a single space between the closing parenthesis and the open bracket. */ function foo() { } /** * Use a single space between the closing parenthesis and the open bracket. */ function foo() { } // There has to be a space betrween the comma and the next argument. $var = foo($i, $i); // Multiline function call - all the parameters have to be on the next line // I don't thing that this rule is strictly followed... $var = foo($i, $i, $i ); // Multiline function call - closing parenthesis has to be on a own line. $var = foo( $i, $i, $i); /** * Only multiline comments with /** should be used to comment classes * Curly brace has to be on the same line. */ class bad { /** * Private properties must not have a prefix. */ private $_secret = 1; /** * Public properties must not have a prefix. */ protected $_foo = 1; /** * Public properties must not have a prefix. */ public $_bar = 1; /** * Public static variables use camelCase. */ public static $base_path = NULL; /** * "var" keyword must no be used. */ public $x = 5; } // Comments must have content ;) and there must be a space after the class name. /** * */ class FooBar { } // When calling class constructors with no arguments, always include parentheses: $bar = new Bar(); // Check for spaces between classname and opening parenthesis. $bar = new Bar(); // Check argument formating. $bar = new Bar($i, $i); // Concatenation - there has to be a space. $i . "test"; $i . 'test'; $i . $i; $i . C_TEST; $i . "test"; $i . 'test'; $i . $i; $i . C_TEST; $i . "test"; $i . 'test'; $i . $i; $i . C_TEST; /** * */ class FunctionTest { /** * */ public function _foo() { } /** * */ protected function _bar() { } /** * Asterisks of this comment are wrong. */ private function foobar() { } } /** * */ interface startsLowerInterface {} /** * */ class Uses_UnderScores {} /** * */ function _refix() { } // Usage of t() - there should be no escaping. t('She\'s a good person.'); t("This is a \"fancy\" string."); // Concatenation of strings is bad in t(). t('Your user name: ' . $user_name); // Empty t() calls are not allowed. t(); // The masage must not begin or end with white spaces. $text = t('Number of attempts: ') . $number; // require_once should be a statement. require_once 'somefile.php'; /** * Wrong comment style. */ function test1() { } /** * */ function test2() { } /** * Implementation of hook_menu(). */ function mymodule_menu() { return array(); } /** * Implements of hook_boing(). */ function mymodule_boing() { return array(); } /** * Implementation hook_foo_BAR_ID_bar() for some_type_bar(). * * Extended "Implements" syntax for hooks. */ function mymodule_foo_some_type_bar() { } /** * Implements hook_test_info(). * * @param int $param * Duplicated documentation which should be on the hook definition only. */ function mymodule_test_info($param) { } /** * Implements hook_test2_info(). * * @return int * Duplicated documentation which should be on the hook definition only. */ function mymodule_test2_info($param) { } /** * Extra newline above is not allowed. */ function test3() { } /** * Extra newlines between function descriptions are not allowed. * * More description here ... */ function test4() { } /** * There must be a new line before tags. * * @param int $x * A number. */ function test5($x) { } /** * Throws tag must have an Exception name. * * @throws */ function test6() { } /** * Return tag must not be empty. * * @return */ function test7() { } /** * Param tags must come first. * * @return array * * @param int $x * A number. */ function test8($x) { } /** * Last Param tag must be followed by a new line. * * @param int $x * A number. * @param int $y * Another number. * * @return bool */ function test9($x, $y) { } /** * Only one space before param type and return type. * * @param array $x * Shiny array. * * @return int * Some number. */ function test10($x) { } /** * Documented params do not match. * * @param bool $foobar * Wrong name. * @param bool $Y * Wrong case. * @param $z * Missing type. * @param int * @param string $a * Comment should be on a new line. * @param string $non_existent * Parameter does not exist. * * @return bool This description should be on the next line. * * @see Too much space here * @see my_function() * @see foo_bar() and here some not allowed text. */ function test11($x, $y, $z, $a, $b) { } /** * Referenced variables should not contain the & in the docblock. * * @param int &$x * Refrenced variable. */ function test12(&$x, &$y) { } /** * Malformed doxygen asterisks. * * @return array */ function test13() { } /** * There should be no empty line between doc block and function. */ function test14() { } /** * Return data type documentation must not be the variable name. * * @return foo * Description bla. */ function test15() { $foo = TRUE; return $foo; } /** * This line should not be used. */ function test16() { } /** * Invalid data types. * * @param mixed $x * Description here. * @param bool $y * Description here. * * @return unknown_type * Description here. */ function test17($x, $y) { } /** * Too much space after the function keyword. */ function test18() { } /** * Space before opening parenthesis is not allowed. */ function test19() { } /** * There should be a space after the comma. */ function test20($a, $b) { } /** * Some indentation errors. */ function test21() { foo(); if (TRUE) { bar(); } // Too far left. $x = 1 + 1; } /** * Function parameters must be all lower case. */ function test22function($Fullname) { } // Test string concatenation. $x = 'This string is to short to be' . 'concatenated'; // Object operator spacing is not allowed. $z = $foo->x; $z = $foo->x; $z = $foo->x; // Strings in l() should be translated. $x = l('Link text', ''); $x = 'Some markup text with allowed HTML5
tag'; $ip = $_SERVER['REMOTE_ADDR']; // Inline if statements with ? and wrong spacing. $x = $y == $z ? 23 : 42; $x = $y == $z ? 23 : 42; $x = $y == $z ? 23 : 42; $x = $y == $z ? 23 : 42; // Inline if statements with : and wrong spacing. $x = $y == $z ? 23 : 42; $x = $y == $z ? 23 : 42; $x = $y == $z ? 23 : 42; $x = $y == $z ? 23 : 42; $x = $y == $z ? 23 : 'foo'; $x = $y == $z ? : 42; // Watchdog messages should not use t(). watchdog('mymodule', t('Log message here.')); // Inline control structures are bad. if ($x == $y) { $x = 42; } // isset() must be all lower case. if (isset($x)) { } /** * Comment should end with '*', not '**' before the slash. **/ function test23() { } /** * Comment has 2 spaces at the beginning. */ function test24() { } /** * Wrong tag indentation. * * @return bool * Description. */ function test25() { return TRUE; } /** * Void returns are not allowed. * * @return void * Description. */ function test26() { } /** * Debugging functions are discouraged. */ function test27() { $var = array(1, 2, 3); dsm($var); dpm($var); } /** * */ class FooBar2 { /** * Function body should be on a line by itself, same for the closing brace. */ public function test26() { print 'x'; } } // Security issue: https://www.drupal.org/node/750148 preg_match('/.+/e', 'subject'); preg_match('/.+/iemesuexADSUeXJ', 'subject'); preg_filter('/.+/imsuexADSUXJ', 'replacement', 'subject'); preg_replace('/.+/imsuxADSUeXJ', 'replacement', 'subject'); // Use a not so common delimiter. preg_match('@.+@e', 'subject'); preg_match('@.+@iemesuexADSUeXJ', 'subject'); preg_filter('@.+@imsuexADSUXJ', 'replacement', 'subject'); preg_replace('@.+@imsuxADSUeXJ', 'replacement', 'subject'); /** * */ interface notA_GoodInterfaceName { } // The catch statement must be on a new line. try { do_something(); } catch (Exception $e) { scream(); } // Function name aliases should not be used. $x = join($glue, $pieces); // Empty strings passed to t() are wrong. t(''); t(""); /** * Doc comment with a white space at the end. * * He made a gendered comment. */ function test28() { } // Multiple statements on one line are not allowed. echo 'Hi!'; ; /** * A test class. */ class ScopeKeyword { /** * Much weird spacing here. */ public static function test() { } }