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
つづく