5

我遇到了使用 PSR2 标准的 PHPCS 问题。高低搜索,但令我惊讶的是,我找不到任何人报告同样的问题。

假设我有一个类声明如下:

<?php

class MyChildClass extends \SomeNameSpace\MyParentClass
{
}

然后我通过 PHPCS 运行它:

bash-3.2$ phpcs -s  --standard=PSR2 test.php 

FILE: test.php
--------------------------------------------------------------------------------
FOUND 2 ERROR(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
 3 | ERROR | Expected 0 spaces between "SomeNameSpace" and comma; $1 found
   |       | (PSR2.Classes.ClassDeclaration.SpaceBeforeComma)
 3 | ERROR | Expected 1 space before "MyParentClass"; 13 found
   |       | (PSR2.Classes.ClassDeclaration.SpaceBeforeName)
--------------------------------------------------------------------------------

Time: 0 seconds, Memory: 4.00Mb

还:

Bash-3.2$ phpcs --version
PHP_CodeSniffer version 1.3.6 (stable) by Squiz Pty Ltd. (http://www.squiz.net)

有没有人遇到过这个?难道我做错了什么?否则我将首先进入嗅探器代码 - 这感觉不对。

4

1 回答 1

8

当前版本的 PHP_CodeSniffer 中的 PSR-1 和 PSR-2 标准并不完整。我从未在发行说明中提及它们,因此人们显然要么刚刚找到它们,要么他们正在谈论当前的开发版本,它们已完成。

如果你想在 PHP_CodeSniffer 中试用 PSR-2 的完整版本,你需要克隆 git repo 并直接使用它:

git clone git://github.com/squizlabs/PHP_CodeSniffer.git
cd PHP_CodeSniffer
php scripts/phpcs --standard=PSR2 /path/to/code

或者你可以等待官方发布,假设没有报告重大问题,我计划在下周的某个时间发布。

如果你在你提供的代码上运行最新的开发版本,你会得到这个:

2:PHP_CodeSniffer gsherwood$ php scripts/phpcs --standard=psr2 temp.php

FILE: /Users/gsherwood/Sites/Projects/PHP_CodeSniffer/temp.php
--------------------------------------------------------------------------------
FOUND 2 ERROR(S) AFFECTING 2 LINE(S)
--------------------------------------------------------------------------------
 3 | ERROR | Each class must be in a namespace of at least one level (a
   |       | top-level vendor name)
 5 | ERROR | Expected 1 blank line at end of file; 0 found
--------------------------------------------------------------------------------

Time: 0 seconds, Memory: 4.25Mb

希望有帮助。

于 2012-09-21T03:39:30.357 回答