You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类/trait/接口是否存在可自定义的Sniff属性以规范内部空行格式?

问题解答

针对类、trait、接口三种结构,完全可以通过自定义Sniff属性实现你要求的两条代码规范校验,具体实现逻辑如下:

  • 校验结构内部首行内容前无空行:自定义Sniff时监听T_CLASS、T_TRAIT、T_INTERFACE三类 token,获取对应结构左大括号的行号后,直接读取下一行的内容,若为空白行即可触发错误提示。
  • 校验结构内部末尾内容后保留1个空行:同样监听上述三类token,获取对应结构右大括号的行号后,分别校验右大括号前1行是否为空白行、前2行是否为非空白内容,不满足条件即可触发错误提示。

如果你不想完全从头写Sniff,也可以基于PHP_CodeSniffer已有的Generic.WhiteSpace.ScopeIndent、PSR2.Classes.ClassDeclaration规则扩展,只需要追加上述两个校验逻辑即可,不需要重构完整的Sniff功能。

规则示例匹配说明

你给出的合法/非法规则完全可以和上述校验逻辑对应:
合法代码:

Class Example()
{
  /** Content */

}

非法代码(同时触发首行前有空行、末尾后无空行两个错误):

Class Example()
{
 
 /** Content */
}

内容的提问来源于stack exchange,提问作者Safry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:51:03