valkyrja / phpcodesniffer
PHPCodeSniffer for the Valkyrja Project.
Requires
- php: >=8.4
- slevomat/coding-standard: ^8.28.1
- squizlabs/php_codesniffer: ^4.0.1
This package is auto-updated.
Last update: 2026-04-17 01:38:22 UTC
README
Valkyrja PHP Code Sniffer
PHP Code Sniffer rules for the Valkyrja project.
Build Status
| Linting |
|
|
| Coding Rules |
|
|
| Static Analysis |
|
|
| Testing |
|
Usage
The ruleset is defined in .github/ci/phpcodesniffer/ruleset.xml and run via
the phpcodesniffer Composer script:
composer phpcodesniffer
This runs phpcs against src/ and tests/ using the project ruleset. The
src/ run suppresses warnings (-n); the tests/ run additionally shows
sniff source codes (-n -s).
To see all warnings (not just errors) run:
cd .github/ci/phpcodesniffer && composer warnings
Ruleset
Excluded Paths
The following paths are excluded from all checks:
| Path |
|---|
.github/ |
.phpunit.cache/ |
build/ |
coverage-html/ |
docs/ |
functions/ |
pre-commit-hooks/ |
vendor/ |
Rules
SlevomatCodingStandard.Files.TypeNameMatchesFileName
Enforces that each type (class, interface, trait, enum) is declared in a file whose name matches the type name, rooted at the configured namespaces:
| Root path | Namespace |
|---|---|
src/Valkyrja |
Valkyrja |
tests/Tests |
Valkyrja\Tests |
The following directories are skipped when resolving file paths:
.github, docs, functions, pre-commit-hooks, vendor
SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly
All referenced names must appear in use statements — fully qualified names
are not permitted inline:
| Property | Value | Effect |
|---|---|---|
allowPartialUses |
false |
Partial uses (e.g. use Foo\Bar referencing Bar\Baz) are not allowed |
allowFullyQualifiedNameForCollidingClasses |
false |
Colliding class names must be aliased, not referenced fully qualified |
searchAnnotations |
true |
Annotations in docblocks are also checked for unimported names |
Workflows
The _workflow-call.yml reusable
workflow runs PHP Code Sniffer against the calling repository's source. It is
designed to be called from other repositories via workflow_call.
Inputs
| Input | Type | Default | Description |
|---|---|---|---|
paths |
string | — | Required. YAML filter spec with two keys: ci (CI config files that trigger a base-branch fetch) and files (all files that trigger the check). |
post-pr-comment |
boolean | true |
Post a PR comment on failure and remove it on success. Disable when the calling workflow handles its own reporting. |
composer-options |
string | '' |
Extra flags passed to every composer install step (e.g. --ignore-platform-req=ext-openswoole). |
php-version |
string | '8.4' |
PHP version to use. |
ci-directory |
string | '.github/ci/phpcodesniffer' |
Path to the CI directory containing composer.json and the tool config. |
extensions |
string | 'mbstring, intl' |
PHP extensions to install via shivammathur/setup-php. |
Usage
jobs: phpcodesniffer: uses: valkyrjaio/phpcodesniffer/.github/workflows/_workflow-call.yml@master permissions: pull-requests: write contents: read with: php-version: '8.4' paths: | ci: - '.github/ci/phpcodesniffer/**' - '.github/workflows/phpcodesniffer.yml' files: - '.github/ci/phpcodesniffer/**' - '.github/workflows/phpcodesniffer.yml' - 'src/**/*.php' - 'composer.json' secrets: inherit
secrets: inherit is required to pass the VALKYRJA_GHA_APP_ID and
VALKYRJA_GHA_PRIVATE_KEY org secrets used for PR comments.