vicimus / standard
Requires
- php: >=7.1
- escapestudios/symfony2-coding-standard: ~3
- phpmd/phpmd: ^2.6
- slevomat/coding-standard: ^8.0
- squizlabs/php_codesniffer: ^3.5.0
- dev-master
- v6.0.2
- v6.0.1
- 6.0.0
- 5.1.0
- v5.0.7
- v5.0.6
- v5.0.5
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.2.1
- v4.2.0
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-return-type
- dev-slevomat2
- dev-slevomat
- dev-php5
- dev-reversion
- dev-new-reqs
- dev-global
This package is auto-updated.
Last update: 2024-09-12 17:26:40 UTC
README
这是Vicimus编码标准的phpcs实现。结合PSR2编码标准,Vicimus编码标准填补了PSR2没有涉及的一些空白(主要是PHP 7相关的内容,但也包括一些其他内容)。
值得注意的是,其中许多规则/嗅探器来自现有的phpcs代码标准嗅探器,因此许多规则描述直接取自它们的文档。
规则/嗅探器
以下规则扩展了PSR2的编码标准。
数组
禁止长数组语法
确保所有数组定义使用短语法[]
而不是长语法array()
。
数组尾随逗号
在数组中最后一个元素后使用逗号可以更容易地添加新元素,并产生更干净的版本差异。
此嗅探器强制多行数组使用尾随逗号,并要求使用短数组语法[]
。
类
类常量可见性
在PHP 7.1中,可以声明类常量的可见性。类似于对于属性和方法的可选可见性声明(这在合理的编码标准中实际上是必需的),此嗅探器还要求声明所有类常量的可见性。
const FOO = 1; // visibility missing!
public const BAR = 2; // correct
文档注释
确保文档块遵循基本格式。这确保了在所有文档块内容中都有适当的间距、换行等。
函数调用参数间距
确保函数参数之间有适当的间距。
小写常量
有点冗余,但包括在内,确保常量不是小写的。
未使用私有元素
检查未使用的方法、类中的未使用或只写属性以及未使用的私有常量。报告的未使用元素可以安全地删除。
这在重构过程中非常有用,可以清理死代码和注入的依赖项。
大写常量
确保常量声明为大写。
格式化
禁止制表符缩进
确保所有缩进使用空格而不是制表符。
文档注释对齐
确保所有文档注释使用适当的对齐和间距,在参数和返回值之间,包括类型、名称和描述。
// Good --
/**
* A method!
*
* @param string $value This is the value to pass
* @param int $number Another parameter here
*
* @return Response
*/
// Bad --
/**
* A method!
*
* @param string $value
* @param int $number Another parameter here
*
* @return Response
*/
函数注释
确保所有方法都有准确的文档块注释。
行内文档注释声明
报告行内phpDocs中@var的无效格式。
行长度限制
强制字符限制为80个字符,如果超过120个字符,则会抛出错误。
类型提示
声明严格类型
强制在每个PHP文件顶部有declare(strict_types = 1)。应遵循此示例
<?php declare(strict_types = 1);
namespace ...
有关此声明的更多信息,请阅读手册中的章节。
长类型提示
强制在phpDocs中使用简写标量类型提示变体:int而不是integer和bool而不是boolean。这是与仅允许简写变体的本地标量类型提示保持一致。
为空默认值使用可为空的类型
检查每个可空和可选参数(标记为 = null)之前是否存在可空性 ? 符号
function foo(
int $foo = null, // ? missing
?int $bar = null // correct
) {
}
参数类型提示间隔
- 检查类型提示和参数名称之间只有一个空格:Foo $foo
- 检查类型提示和可空性符号之间没有空格:?Foo
返回类型提示间隔
强制执行返回类型提示的一致格式,如下所示
function foo(): ?int
缺少标量类型提示
确保所有方法参数(字符串、布尔值、整数)在可能的情况下使用标量类型提示。
类型提示声明
-
检查 phpDoc @var 中缺少属性类型。
-
检查是否缺少类型提示,如果它们可以本地声明。如果 phpDoc 包含可以写成 PHP 7.0 或 7.1 本地类型提示的内容,此嗅探器会报告。
-
检查方法体包含带值的返回时是否缺少 @return 和/或本地返回类型提示。
-
检查无用的文档注释。如果本地方法声明包含所有内容且 phpDoc 没有添加任何有用的内容,则报告为无用,并且可以选择性地自动删除 phpcbf。
-
一些 phpDoc 即使不添加任何类型提示信息也可能仍然有用。它们可以包含代码元素的文本描述,以及一些有意义的注释,如 @expectException 或 @dataProvider。
-
强制指定可遍历类型(如
array
、iterable
和\Traversable
)中的内容。
缺少类型提示
确保所有方法参数在可能的情况下都使用类型提示。
异常
无效的捕获
此嗅探器找到无法到达的捕获块
try {
doStuff();
} catch (\Throwable $e) {
log($e);
} catch (\InvalidArgumentException $e) {
// unreachable!
}
仅引用 Throwable
在 PHP 7.0 中,添加了 Throwable
接口,它允许在比 Exception
原来允许的情况下更多的情况下捕获和处理错误。因此,如果在 PHP 5.x 中的捕获语句包含 Exception
,则意味着它可能需要在 PHP 7.x 中重写为引用 Throwable
。
控制结构
条件中的赋值
禁止在 if、elseif 和 do-while 循环条件中进行赋值
if ($file = findFile($path)) {
}
由于这是常用的,因此允许在 while 循环条件中进行赋值。
禁止使用相等运算符
禁止使用松散的 == 和 != 比较运算符。使用 === 和 !== 而不是,它们要安全得多,也更可预测。
命名空间
按字母顺序排序的 uses
检查文件顶部是否按字母顺序排序。遵循自然排序并考虑特殊符号的边缘情况。以下代码片段是正确排序的 uses 的示例
use LogableTrait;
use LogAware;
use LogFactory;
use LoggerInterface;
use LogLevel;
use LogStandard;
禁止分组使用
分组使用声明很丑陋,使差异很丑陋,此嗅探器禁止它们。在 官方 RFC 中可以找到不应做的事情的示例。
每行多个 uses
禁止使用逗号分隔的多个 uses
use Foo, Bar;
仅引用使用的名称
强制使用所有引用的名称。这意味着,您必须始终在文档顶部使用 use
,然后通过短名称引用它们。
未使用 uses
寻找来自其他命名空间的无用导入。
uses 语句不以反斜杠开头
禁止使用语句以反斜杠开头
use \Foo\Bar;
从同一命名空间使用
禁止从同一命名空间使用
namespace Foo;
use Foo\Bar;
因为您已经在 Foo
命名空间中,所以 use 语句是多余的,并增加了视觉债务。