devbeta/psr12-strict-rules

PSR-12 严格编码规范

安装: 143

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

开放问题: 0

类型:phpcodesniffer-standard

1.0.3 2021-10-30 15:28 UTC

This package is auto-updated.

Last update: 2024-09-29 06:35:16 UTC


README

本规范扩展并扩展了 PSR-12,扩展的编码风格指南并要求遵循 PSR-1,基本编码规范。

贡献者有不同的编码风格,维护者也是如此。在代码审查期间,经常就空格和对齐进行讨论,讨论在哪里以及何时需要导入一个函数。这正是这个编码规范的作用:在组件内部以及组件之间保持内部一致性。

安装

通过运行以下命令使用 composer 安装模块

composer require --dev devbeta/psr12-strict-rules

用法

在您的存储库的基本路径上创建文件 phpcs.xml,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="Coding standard"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd">
    <description>PSR-12 strict coding standard</description>

    <arg name="colors"/>
    <arg name="cache" value=".phpcs.json"/>
    <arg name="extensions" value="php"/>
    <arg name="parallel" value="80"/>

    <arg value="p"/>

    <rule ref="PSR12-Strict-Rules"/>

    <file>config</file>
    <file>src</file>
    <file>tests</file>
</ruleset>

您可以在该文件中添加或排除某些位置。有关参考,请参阅: Annotated Ruleset

编码风格指南

基本编码规范

  • 代码必须遵循 PSR-12 中概述的所有规则。

数组

  • 多行数组中的所有值必须使用 4 个空格缩进。
  • 必须使用简短数组语法来定义数组。

  • 不允许有重复的类名。
  • 检查类的声明及其继承是否正确。
  • 文件名必须与终止类名的大小写匹配。
  • 对于自我引用,必须使用没有空格的 self::(小写)而不带空格的域解析运算符。

代码分析

  • 在最终类中必须省略方法的 final 关键字。
  • 检测出不必要的重写方法,这些方法只是调用它们的父方法。

控制结构

  • 验证控制语句是否遵守其编码规范。
  • 确保多行 if 条件被正确定义。

格式化

  • 类型转换运算符之后必须有一个空格。
  • 一元非运算符之后必须有一个空格。
  • 如果赋值跨越两行,请确保等号缩进。

函数

  • 确保单行和多行函数声明被正确定义。

度量

  • 检查函数的循环复杂度(McCabe)。
  • 检查方法的嵌套级别。

命名约定

  • 检查抽象类是否以 Abstract 前缀。
  • 确保方法和函数的命名正确。
  • 检查接口是否以 Interface 后缀。
  • 检查 traits 是否以 Trait 后缀。

运算符

  • 应使用 &&|| 运算符而不是 andor

PHP

  • 不允许使用反引号运算符。
  • 应避免使用已弃用的 PHP 函数。
  • 不应使用 PHP goto 语言结构。
  • 不应使用别名函数。
  • 当遇到任何以倒置符号开头的代码时,抛出错误或警告。
  • 检查是否已声明 strict_types
  • 应使用常量 PHP_SAPI 而不是 php_sapi_name() 函数。
  • 不允许使用 global 关键字。
  • PHP 函数调用必须使用小写。
  • 必须删除非执行代码。

作用域

  • 在静态方法或函数内部不得调用伪变量 $this

字符串

  • 检查两个字符串是否未连接在一起;建议使用一个字符串。
  • 确保连接操作符周围没有空格。

空白字符

  • 检查并修复任意括号内的空白字符。
  • 验证扩展操作符与它应用的变量/函数调用之间的间距。
  • 检查对象操作符是否正确缩进。
  • 检查作用域的结束花括号是否正确对齐。
  • 检查函数和方法之间的分隔。
  • 语言结构之后必须有一个空格。
  • 除非使用多行,否则对象操作符周围不得有任何空格。
  • 验证类成员的间距是否正确。
  • 确保对象操作符前后没有空白字符。
  • 验证操作符周围是否有有效间距。
  • 分号之前不得有空格。应避免冗余分号。