chancedigital/wp-coding-standards

此包已被弃用,不再维护。未建议替代包。

Chance Digital编码规范

安装: 76

依赖: 0

建议者: 0

安全: 0

星级: 1

关注者: 2

分支: 0

类型:phpcodesniffer-standard

v0.4.0 2019-06-20 16:32 UTC

This package is auto-updated.

Last update: 2024-02-21 19:54:17 UTC


README

68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6368616e63656469676974616c2f77702d636f64696e672d7374616e64617264732e737667 Build Status

这是Chance Digital PHP CodeSniffer规则的规范化版本。它最初是基于Human Made编码规范的一个分支。

配置

  1. composer require --dev chancedigital/wp-coding-standards
  2. 运行以下命令以运行标准检查
vendor/bin/phpcs --standard=vendor/chancedigital/wp-coding-standards .

这里的最后一个.指定了您要测试的文件;这通常是当前目录(.),但您也可以通过指定它们来选择性地检查文件或目录。

您可以将此添加到您的Travis YAML文件中作为测试

script:
	- phpunit
	- vendor/bin/phpcs --standard=vendor/chancedigital/wp-coding-standards .

排除文件

此标准包括对.phpcsignore文件的特殊支持(将来,这应该被集成到phpcs本身)。只需在根目录(您将从那里运行phpcs)中放置一个.phpcsignore文件。

此文件的格式类似于.gitignore和类似文件:每行一个模式,注释行应以#开头,仅包含空白字符的行将被忽略。

# Exclude our tests directory.
tests/

# Exclude any file ending with ".inc"
*\.inc

请注意,模式应匹配PHP_CodeSniffer样式:为方便起见,*被翻译为.*,但所有其他字符都像正则表达式一样工作。

模式相对于包含.phpcsignore文件的目录。在加载时,它们被转换为绝对模式:例如,在/your/dir/.phpcsignore中的*/tests/*将变成正则表达式/your/dir/.*/tests/.*。**这与常规PHP_CodeSniffer实践不同**。

高级/扩展

如果您想添加更多规则(例如WordPress.com VIP特定的规则),您可以创建自己的自定义标准文件(例如phpcs.ruleset.xml)。

<?xml version="1.0"?>
<ruleset>
	<!-- Use Chance Digital Coding Standards -->
	<rule ref="vendor/chancedigital/wp-coding-standards" />

	<!-- Add VIP-specific rules -->
	<rule ref="WordPress-VIP" />
</ruleset>

然后您可以在运行phpcs时引用此文件。

vendor/bin/phpcs --standard=phpcs.ruleset.xml .

排除/禁用检查

您还可以自定义规则以排除不适用于项目的元素。

<rule ref="vendor/chancedigital/wp-coding-standards">
	<exclude name="ChanceDigital.Files.ClassFileNameSniff" />
</rule>

规则也可以在行内禁用。使用phpcs规则可以禁用注释// @codingStandardsIgnoreLine

要了解这些代码是什么,在运行phpcs时指定-s,然后将输出代码。您可以指定完整代码,或部分代码以禁用错误组。

包含的检查

phpcs标准基于WordPress编码规范WordPress-Extra标准,并进行了定制和添加以匹配我们的风格指南。

测试

运行测试

要在本地运行测试,您需要PHP CodeSniffer的源代码版本。

如果您尚未安装您的Composer依赖项

composer install --prefer-source

如果您已经安装,并且需要将phpcs目录转换为源版本

rm -r vendor/squizlabs/php_codesniffer
composer install --prefer-source
composer dump-autoload

编写嗅探测试

要添加测试,您应该镜像嗅探的目录结构。例如,对ChanceDigital/Sniffs/Layout/OrderSniff.php的测试需要以下文件

ChanceDigital/Tests/Layout/OrderUnitTest.php # Unit test code
ChanceDigital/Tests/Layout/OrderUnitTest.inc # Code to be tested

实际上,您正在将后缀Sniff.php替换为UnitTest.php

一个基本的单元测试类看起来如下所示

<?php

namespace ChanceDigital\Tests\Layout;

use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest;

/**
 * Class name must follow the directory structure to be autoloaded correctly.
 */
class OrderUnitTest extends AbstractSniffUnitTest {

	/**
	 * Returns the lines where errors should occur.
	 *
	 * @return array <int line number> => <int number of errors>
	 */
	public function getErrorList() {
		return [
			1  => 1, // line 1 expects 1 error
		];
	}

	/**
	 * Returns the lines where warnings should occur.
	 *
	 * @return array <int line number> => <int number of warnings>
	 */
	public function getWarningList() {
		return [];
	}

}

测试用例

而不是单独测试嗅探,FixtureTests.php还会测试tests/fixtures目录中的文件,并确保整个文件通过。

要添加一个预期通过的文件,只需将其添加到相应的子目录/文件中的tests/fixtures/pass

要添加一个预期失败的文件,将其添加到相应的子目录/文件中的tests/fixtures/fail。然后您需要将预期的错误添加到与测试文件配套的JSON文件中(即,添加.json后缀的文件名)。该文件应包含一个有效的JSON对象,键为行号,每个项是一个错误对象的列表

{
	"1": [
		{
			"source": "ChanceDigital.Files.FunctionFileName.WrongFile",
			"type": "error"
		}
	]
}

错误对象包含

  • source:内部phpcs错误代码;使用phpcs-s标志来获取代码。
  • type:根据检查的严重性,可以是errorwarning