byteever / byteever-sniffs
A comprehensive PHP_CodeSniffer ruleset extending WordPress Coding Standards with ByteEver-specific conventions for modern PHP development
Installs: 2 301
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:Shell
Type:phpcodesniffer-standard
Requires
Requires (Dev)
- roave/security-advisories: dev-latest
README
A comprehensive PHP_CodeSniffer ruleset that extends WordPress Coding Standards with ByteEver-specific conventions for modern PHP development.
Features
- 🎯 WordPress-First: Built on top of WordPress Coding Standards (WPCS) 3.1.0
- 🐘 PHP Compatibility: Supports PHP 7.4 - 8.5 with PHPCompatibility checks
- ⚡ Performance: Configured for parallel processing with 8 threads
- 🎨 Sensible Defaults: Pre-configured with practical exclusions for real-world development
- 📝 Tab Indentation: Enforces consistent tab-based indentation
- 🔧 Customizable: Easy to extend and override rules per project
What's Included
Base Standards
- WordPress: Complete WordPress coding standards
- WordPress-Extra: Additional WordPress-specific rules
- WordPress-Docs: Documentation standards
- PHPCompatibilityWP: WordPress-specific PHP compatibility checks
ByteEver Customizations
- Tab-based indentation (1 tab = 1 indent level)
- Space inside parentheses for better readability
- Relaxed file naming requirements
- Allowance for shorthand array syntax
[]
- Sensible exclusions for database queries and nonce verification
- Comment and doc comment tokens ignored in indentation checks
Installation
Install via Composer:
composer require byteever/byteever-sniffs
The package will automatically:
- Install PHP_CodeSniffer and required dependencies
- Register the
ByteEver-Default
standard - Set it as the default standard for your project
Usage
Command Line
Quick Check
vendor/bin/phpcs .
Using Composer Script
composer run phpcs
Custom Configuration
vendor/bin/phpcs --standard=ByteEver-Default path/to/files
IDE Integration
For better IDE integration, create a .phpcs.xml.dist
file in your project root:
<?xml version="1.0"?> <ruleset name="Project Coding Standards"> <description>Project-specific coding standards based on ByteEver defaults.</description> <!-- Scan these directories --> <file>src/</file> <file>inc/</file> <!-- Exclude these paths --> <exclude-pattern>vendor/</exclude-pattern> <exclude-pattern>node_modules/</exclude-pattern> <exclude-pattern>*.min.js</exclude-pattern> <!-- Configuration --> <config name="minimum_supported_wp_version" value="6.2" /> <config name="testVersion" value="7.4-8.5" /> <!-- Use ByteEver standards --> <rule ref="ByteEver-Default" /> <!-- Project-specific customizations --> <rule ref="WordPress.WP.I18n"> <properties> <property name="text_domain" type="array"> <element value="your-text-domain"/> </property> </properties> </rule> </ruleset>
Continuous Integration
Add to your CI workflow:
# GitHub Actions example - name: PHP CodeSniffer run: composer run phpcs
Configuration Details
PHP Version Support
- Minimum: PHP 7.4
- Maximum: PHP 8.5
- Compatibility: Uses PHPCompatibilityWP for WordPress-specific compatibility checks
Key Rules Applied
- WordPress Coding Standards (with sensible exclusions)
- Tab indentation (1 tab per indent level)
- Space inside parentheses for readability
- Superfluous whitespace detection
- PHP compatibility checking for WordPress
Excluded Rules
The following rules are excluded for practical development:
- File naming conventions (WordPress.Files.FileName)
- Nonce verification requirements
- Direct database query restrictions
- Global variable override prohibitions
- Some documentation capitalization requirements
Customization
Project-Level Overrides
Create a phpcs.xml.dist
file to override or add rules:
<rule ref="ByteEver-Default"> <!-- Enable a rule that's disabled by default --> <exclude name="WordPress.Files.FileName" /> </rule> <!-- Add custom exclusions --> <rule ref="WordPress.Security.NonceVerification.Missing"> <exclude-pattern>admin/ajax-handlers/*</exclude-pattern> </rule>
Inline Annotations
Disable rules for specific code blocks:
// phpcs:disable WordPress.Security.NonceVerification.Missing if ( isset( $_POST['data'] ) ) { // Process data without nonce check } // phpcs:enable WordPress.Security.NonceVerification.Missing
Requirements
- PHP 7.4 or higher
- Composer
- PHP_CodeSniffer 3.9.0 or higher
Dependencies
dealerdirect/phpcodesniffer-composer-installer
: ^1.0phpcompatibility/phpcompatibility-wp
: ^2.1wp-coding-standards/wpcs
: ^3.1.0
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test with
composer run phpcs
- Submit a pull request
License
GPL-3.0-only
Author
Sultan Nasir Uddin
Email: sultan@byteever.com
Organization: ByteEver
Part of the ByteEver development toolkit for WordPress and PHP projects.