php codesniferというツールがあります。 ソースコードの書き方を揃えようね、というチェックツールですね。 これ自分達のチームに応じてルールを設定できるのだけど、ルールの作り方が分かりづらい。 ってことで、色々調べてみました。 phpcsのルール一覧を作ってみた・スペース編

基本的な書き方

ruleset ここの書き方を参考にしましょう。 で、ここのデフォルトルールについて以下説明していきます。 まずはスペース関係から。

Generic.WhiteSpace.DisallowSpaceIndent、Generic.WhiteSpace.DisallowTabIndent

スペースインデント/タブインデントを許可しません。
function aaa() {
    return 0;
}
ここのインデントですね。
 3 | ERROR | [x] Tabs must be used to indent lines; spaces are not allowed

Generic.WhiteSpace.ScopeIndent

インデントの数を調整します。 デフォルトは4。
function aaa() {
   return 0;
}
スペースが4つないとエラーになります。
 4 | ERROR | [x] Line indented incorrectly; expected at least 4 spaces, found 3

Generic.Formatting.NoSpaceAfterCast、Generic.Formatting.SpaceAfterCast

キャストの後にスペースを入れるかどうかを決めます。
function aaa() {
    $abc = 1.0;
    return (int) $abc;
}
この(int)の後のスペースですね。
 4 | ERROR | [x] A cast statement must not be followed by a space

Squiz.WhiteSpace.CastSpacing

キャストの中のスペースを入れないようにします。
function aaa() {
    $abc = 1.0;
    return ( int)$abc;
}
 8 | ERROR | [x] Cast statements must not contain whitespace; expected "(int)" but found "( int)"

Generic.Formatting.SpaceAfterNot

not(!)の後のスペースを入れるかどうかを決めます。
function aaa($abc) {
    return ! $abc;
}
てかスペース入れると分かりづらくない?
 4 | ERROR | [x] There must be a single space after a NOT operator; 0 found

Generic.Arrays.ArrayIndent

2行目にまたがるarrayのスペースを決めます。
$aaa = [
    1,
  2,
   3,
];
こういう場合に警告されます。
 4 | ERROR | [x] Array key not indented correctly; expected 12 spaces but found 16

Squiz.WhiteSpace.ControlStructureSpacing

if文とかブロック要素のあとは一行開けましょうってやつ。
if ($aaa) {
    return;
}
$abc = 1;
個人的にはどうでもいい気がする。
 18 | ERROR | [x] No blank line found after control structure

Squiz.WhiteSpace.FunctionClosingBraceSpace

閉じカッコの前に空行があるよという警告。
if ($aaa) {
    return;

}

$abc = 1;
まさにどうでもいい警告です。
 20 | ERROR | [x] Expected 1 blank line before closing function brace; 0 found

Squiz.WhiteSpace.FunctionSpacing

関数の前は2行開けましょう、という警告。


function aaa() {

}
2行なんだ。
 2 | ERROR | [x] Expected 2 blank lines before function; 0 found

Squiz.WhiteSpace.LanguageConstructSpacing.IncorrectSingle

LanguageConstructってのはechoとかprintとか。 echoの後のスペースは1文字にしろと。
echo  123;
 3 | ERROR | [x] Language constructs must be followed by a single space; expecte
d 1 space but found

Squiz.WhiteSpace.LogicalOperatorSpacing

LogicalOperatorとは&&とか||のこと。
if ($a||$b) {
前後にスペースを入れましょう。
 5 | ERROR | [x] Expected 1 space after logical operator; 0 found

Squiz.WhiteSpace.MemberVarSpacing

クラスとメンバの間に空白行が必要です。
class aaa {
public $abc;
 3 | ERROR | [x] Expected 1 blank line(s) before first member var; 0 found

Squiz.WhiteSpace.ObjectOperatorSpacing

static関数の::ですね。
Sample :: func();
 9 | ERROR | [x] Space found before object operator

Squiz.WhiteSpace.OperatorSpacing

これは=とか<とか&を表します。
$a=1;
 9 | ERROR | [x] Expected 1 space before "="; 0 found

Squiz.WhiteSpace.PropertyLabelSpacing

これはjsだけに動くSniff。:のスペースを表します。
var a:1;
 2 | ERROR | [x] There must be a single space after the colon in a property/label declaration

Squiz.WhiteSpace.ScopeClosingBrace

閉じカッコです。
  }
 5 | ERROR | [x] Closing brace indented incorrectly; expected 0 spaces, found 2

Squiz.WhiteSpace.ScopeKeywordSpacing

スコープを表すキーワード、staticとかですね。 publicだけだと何も言われません。
public static   function aaa()
 3 | ERROR | [x] Scope keyword "static" must be followed by a single space; found 3

Squiz.WhiteSpace.SemicolonSpacing

その名の通りセミコロンです。
$a = 1 ;
 3 | ERROR | [x] Space found before semicolon; expected "1;" but found "1 ;"

Squiz.WhiteSpace.SuperfluousWhitespace

末尾のスペース。どうでも良すぎる。
$a = 1;   
 3 | ERROR | [x] Whitespace found at end of line
つづく