drevops/phpcs-standard
最新稳定版本:0.6.2
Composer 安装命令:
composer require drevops/phpcs-standard
包简介
DrevOps PHP_CodeSniffer rules: enforce consistent naming (snakeCase or camelCase) for variables and parameters, PHPUnit data provider conventions.
关键字:
README 文档
README
DrevOps PHP_CodeSniffer Standard
PHP_CodeSniffer standard enforcing:
- Consistent naming conventions for local variables and function/method parameters (configurable:
snakeCaseorcamelCase) - PHPUnit data provider naming conventions and organization
Installation
composer require --dev drevops/phpcs-standard
The standard is automatically registered via phpcodesniffer-composer-installer.
Verify: vendor/bin/phpcs -i (should list DrevOps)
Usage
# Check code vendor/bin/phpcs --standard=DrevOps path/to/code # Auto-fix vendor/bin/phpcbf --standard=DrevOps path/to/code
Configuration
Create phpcs.xml:
<?xml version="1.0"?> <ruleset name="Project Standards"> <rule ref="DrevOps"/> <file>src</file> <file>tests</file> </ruleset>
Use individual sniffs:
<ruleset name="Custom Standards"> <!-- Naming Conventions --> <rule ref="DrevOps.NamingConventions.LocalVariableNaming"/> <rule ref="DrevOps.NamingConventions.ParameterNaming"/> <!-- Testing Practices --> <rule ref="DrevOps.TestingPractices.DataProviderPrefix"/> <rule ref="DrevOps.TestingPractices.DataProviderMatchesTestName"/> <rule ref="DrevOps.TestingPractices.DataProviderOrder"/> </ruleset>
Configure naming convention
By default, both sniffs enforce snakeCase. Configure to use camelCase:
<ruleset name="Custom Standards"> <rule ref="DrevOps.NamingConventions.LocalVariableNaming"> <properties> <property name="format" value="camelCase"/> </properties> </rule> <rule ref="DrevOps.NamingConventions.ParameterNaming"> <properties> <property name="format" value="camelCase"/> </properties> </rule> </ruleset>
LocalVariableNaming
Enforces consistent naming convention for local variables inside functions/methods.
With snakeCase (default):
function processOrder() { $order_id = 1; // ✓ Valid $orderId = 1; // ✗ Error: NotSnakeCase }
With camelCase:
function processOrder() { $orderId = 1; // ✓ Valid $order_id = 1; // ✗ Error: NotCamelCase }
Excludes:
- Function/method parameters (handled by
ParameterNaming) - Class properties (not enforced)
- Reserved variables (
$this,$_GET,$_POST, etc.)
Error codes
DrevOps.NamingConventions.LocalVariableNaming.NotSnakeCase(whenformat="snakeCase")DrevOps.NamingConventions.LocalVariableNaming.NotCamelCase(whenformat="camelCase")
Ignore
// phpcs:ignore DrevOps.NamingConventions.LocalVariableNaming.NotSnakeCase $myVariable = 'value';
ParameterNaming
Enforces consistent naming convention for function/method parameters.
With snakeCase (default):
function processOrder($order_id, $user_data) { // ✓ Valid function processOrder($orderId, $userData) { // ✗ Error: NotSnakeCase
With camelCase:
function processOrder($orderId, $userData) { // ✓ Valid function processOrder($order_id, $user_data) { // ✗ Error: NotCamelCase
Excludes:
- Parameters inherited from interfaces/parent classes
- Parameters in interface/abstract method declarations
- Class properties (including promoted constructor properties)
Error codes
DrevOps.NamingConventions.ParameterNaming.NotSnakeCase(whenformat="snakeCase")DrevOps.NamingConventions.ParameterNaming.NotCamelCase(whenformat="camelCase")
Ignore
// phpcs:ignore DrevOps.NamingConventions.ParameterNaming.NotSnakeCase function process($legacyParam) {}
DataProviderPrefix
Enforces consistent naming prefix for PHPUnit data provider methods.
class MyTest extends TestCase { /** * @dataProvider dataProviderUserLogin */ public function testUserLogin($data) {} public function dataProviderUserLogin() { // ✓ Valid return []; } public function providerUserLogin() { // ✗ Error: InvalidPrefix return []; } }
Configuration
Customize the required prefix:
<rule ref="DrevOps.TestingPractices.DataProviderPrefix"> <properties> <property name="prefix" value="dataProvider"/> </properties> </rule>
Error code
DrevOps.TestingPractices.DataProviderPrefix.InvalidPrefix
Ignore
// phpcs:ignore DrevOps.TestingPractices.DataProviderPrefix.InvalidPrefix public function providerCustom() {}
Auto-fixing
This sniff supports auto-fixing with phpcbf:
- Renames provider methods to use the correct prefix
- Updates all
@dataProviderannotations to reference the new name
DataProviderMatchesTestName
Ensures data provider method names match their test method names.
class MyTest extends TestCase { /** * @dataProvider dataProviderUserLogin */ public function testUserLogin($data) {} public function dataProviderUserLogin() { // ✓ Valid - ends with "UserLogin" return []; } public function dataProviderLogin() { // ✗ Error: InvalidProviderName return []; // Expected: ends with "UserLogin" } }
Supported formats:
@dataProviderannotations#[DataProvider('methodName')]attributes (PHP 8+)
Excludes:
- External providers (
ClassName::methodName) - Non-test methods
- Non-test classes
Error code
DrevOps.TestingPractices.DataProviderMatchesTestName.InvalidProviderName
Ignore
// phpcs:ignore DrevOps.TestingPractices.DataProviderMatchesTestName.InvalidProviderName public function dataProviderCustomName() {}
DataProviderOrder
Enforces structural organization of test and data provider methods.
class MyTest extends TestCase { // ✓ Valid - provider after test (default) /** * @dataProvider dataProviderUserLogin */ public function testUserLogin($data) {} public function dataProviderUserLogin() { return []; } }
Helper methods between tests and providers are allowed:
class MyTest extends TestCase { /** * @dataProvider dataProviderUserLogin */ public function testUserLogin($data) {} private function helperMethod() {} // ✓ Allowed public function dataProviderUserLogin() { return []; } }
Configuration
Reverse the ordering (provider before test):
<rule ref="DrevOps.TestingPractices.DataProviderOrder"> <properties> <property name="providerPosition" value="before"/> </properties> </rule>
Options:
after(default) - Providers must appear after their test methodsbefore- Providers must appear before their test methods
Error codes
DrevOps.TestingPractices.DataProviderOrder.ProviderBeforeTest- Provider appears before test (whenproviderPosition="after")DrevOps.TestingPractices.DataProviderOrder.ProviderAfterTest- Provider appears after test (whenproviderPosition="before")
Ignore
// phpcs:ignore DrevOps.TestingPractices.DataProviderOrder.ProviderBeforeTest public function dataProviderUserLogin() {}
Development
composer install # Install dependencies composer test # Run tests composer test-coverage # Run tests with coverage composer lint # Check code standards composer lint-fix # Fix code standards
License
GPL-3.0-or-later
This repository was created using the Scaffold project template
统计信息
- 总下载量: 17.4k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 1
- 依赖项目数: 18
- 推荐数: 0
其他信息
- 授权协议: GPL-2.0-or-later
- 更新时间: 2025-11-01
