Visual Studio Code(VS Code)使用WordPress编码标准自动格式化代码

知更鸟
知更鸟
站长
2471
文章
0
粉丝
实用技巧评论83阅读模式

个人也比较喜欢WordPress格式化风格,在写主题时也尽量按标准规则写。下面说一下如何在VS Code中使用WordPress编码标准自动格式化代码。

Visual Studio Code(VS Code)使用WordPress编码标准自动格式化代码

需要用到的:

  1. VS Code
  2. VS Code插件PHP Sniffer & Beautifie
  3. Xampp
  4. Composer

前3个,安装使用方法省略,自行学习安装,只简单说一下Composer的安装。

Composer的安装也很简单,一路“NETX”。

只需要在Settings Check这步,选择:xampp\php\php.exe。

其它都不用选择。

通过Composer安装PHP CodeSniffer和WordPress编码标准:

composer require --dev squizlabs/php_codesniffer

 

composer require --dev wp-coding-standards/wpcs

检验是否安装了各种编码规则:

./vendor/bin/phpcs -i

会看到类似:

The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend, Modernize, NormalizedArrays, Universal, PHPCSUtils, WordPress, WordPress-Core, WordPress-Docs and WordPress-Extra

如果没有可以追加:

./vendor/bin/phpcs --config-set installed_paths ./vendor/wp-coding-standards/wpcs

进入. vscode/settings.json添加设置,类似:

{
	"[php]": {
		"editor.defaultFormatter": "valeryanm.vscode-phpsab",
		"editor.formatOnSave": true
	},
	"phpsab.fixerEnable": true,
	"phpsab.executablePathCS": "./vendor/bin/phpcs",
	"phpsab.executablePathCBF": "./vendor/bin/phpcbf",
	"phpsab.snifferShowSources": true,
	"phpsab.snifferMode": "onSave",
	"phpsab.allowedAutoRulesets": [
		"./.phpcs.xml",
	],
	"phpsab.standard": "./.phpcs.xml",
}

如果在格式化时,提示类似没找到phpcbf,可以将:

"phpsab.executablePathCBF": "./vendor/bin/phpcbf",

改为:

"phpsab.executablePathCBF": "C:\\Windows\\System32\\vendor\\bin\\phpcbf",
https://haniwaman.com/note/n-22910/

纠正问题

在格式化while 循环时:

<?php while ( have_posts() ) : the_post(); ?>

会将单行写法格式化成:

<?php
while ( have_posts() ) :
	the_post();
	?>

看着很难受,需要添加自定义规则,让其保持单行。

将下面代码保存为phpcs.xml,放到主题项目目录中即可:

<?xml version="1.0"?>
<ruleset name="Custom WordPress Theme">
    <description>Custom ruleset for WordPress theme development</description>

    <!-- 设置检查的文件路径 -->
    <file>.</file>
    
    <!-- 排除不需要检查的目录 -->
    <exclude-pattern>*/node_modules/*</exclude-pattern>
    <exclude-pattern>*/vendor/*</exclude-pattern>
    <exclude-pattern>*/js/*</exclude-pattern>
    <exclude-pattern>*/css/*</exclude-pattern>
    <exclude-pattern>*.min.js</exclude-pattern>
    <exclude-pattern>*.min.css</exclude-pattern>

    <!-- 使用 WordPress 编码标准作为基础 -->
    <rule ref="WordPress-Core"/>
    <rule ref="WordPress-Docs"/>

    <!-- 允许 WordPress 风格的内联控制结构 -->
    <rule ref="Generic.ControlStructures.InlineControlStructure">
        <properties>
            <property name="error" value="false"/>
        </properties>
    </rule>

    <!-- 允许单行的 while 循环结构,特别针对 WordPress 的 have_posts() 模式 -->
    <rule ref="Squiz.ControlStructures.ControlSignature">
        <exclude name="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace"/>
        <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace"/>
    </rule>

    <!-- 自定义规则:允许 WordPress 风格的循环结构保持单行 -->
    <rule ref="Generic.Formatting.DisallowMultipleStatements"/>
    
    <!-- 设置 PHP 版本 -->
    <config name="testVersion" value="7.0-"/>

    <!-- 设置 tab 宽度 -->
    <config name="tabWidth" value="4"/>

    <!-- 设置文本编码 -->
    <arg name="encoding" value="utf-8"/>

    <!-- 显示进度和详细信息 -->
    <arg value="sp"/>
</ruleset>

但放主题目录中,开发完还需要删除phpcs.xml文件,我们可以在全局设置中添加绝对路径,打开配置文件settings.json,找到:

"phpsab.executablePathCS": "./vendor/bin/phpcs",

在上面添加phpcs.xml的绝对路径:

 "phpsab.standard": "G:/phpcs/phpcs.xml",

 

匿名

回复问题

匿名网友

拖动滑块以完成验证