コマンドライン引数を指定してphpcsを実行-vv
すると、PHPファイルが分割されているトークンのリストが表示されます。あなたが得るようなラインのFirebug::error();
場合:
Process token 1 on line 2 [lvl:0;]: T_STRING => Firebug
Process token 2 on line 2 [lvl:0;]: T_DOUBLE_COLON => ::
Process token 3 on line 2 [lvl:0;]: T_STRING => error
Process token 4 on line 2 [lvl:0;]: T_OPEN_PARENTHESIS => (
Process token 5 on line 2 [lvl:0;]: T_CLOSE_PARENTHESIS => )
Process token 6 on line 2 [lvl:0;]: T_SEMICOLON => ;
スニフ全体を表示するわけではありませんが、T_STRINGトークンを探していると思います。この場合、$ stackPtrが「Firebug」の刺し傷を指していると判断したら、それが静的呼び出しであることを確認してから、次の文字列トークンを取得します。
if ($tokens[$stackPtr]['content'] === 'Firebug'
&& $tokens[($stackPtr + 1)]['code'] === T_DOUBLE_COLON
) {
// This is a static call to a Firebug class method.
$methodName = $tokens[($stackPtr + 2)]['content'];
/* your error code here */
}
または、人々が二重コロンの間にスペースを入れると思う場合は、次のようFirebug :: error()
にすることができます。
if ($tokens[$stackPtr]['content'] === 'Firebug') {
// Find the next non-whitespace token.
$colon = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr + 1), null, true);
if ($tokens[$colon]['code'] === T_DOUBLE_COLON) {
// This is a static call to a Firebug class method.
$methodName = $phpcsFile->findNext(T_STRING, ($colon + 1));
/* your error code here */
}
}
さらに一歩進めたい場合は、T_OPEN_PARENTHESISトークンとT_CLOSE_PARENTHESISトークンを探して、それが関数呼び出しであることを確認できますが、使用しているクラスによって異なります。
お役に立てば幸いです。