From 2dbc97834cc4a03e68e40499954e8568cdc2d462 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Sat, 8 Aug 2026 08:20:30 +0300 Subject: [PATCH 1/4] Add Composer Dependency Analyser --- ...r.yml => composer-dependency-analyser.yml} | 13 ++++----- composer-dependency-analyser.php | 11 +++++++ composer-require-checker.json | 29 ------------------- composer.json | 6 ++-- docs/internals.md | 6 ++-- 5 files changed, 23 insertions(+), 42 deletions(-) rename .github/workflows/{composer-require-checker.yml => composer-dependency-analyser.yml} (53%) create mode 100644 composer-dependency-analyser.php delete mode 100644 composer-require-checker.json diff --git a/.github/workflows/composer-require-checker.yml b/.github/workflows/composer-dependency-analyser.yml similarity index 53% rename from .github/workflows/composer-require-checker.yml rename to .github/workflows/composer-dependency-analyser.yml index df3e5d9..e6ee15a 100644 --- a/.github/workflows/composer-require-checker.yml +++ b/.github/workflows/composer-dependency-analyser.yml @@ -1,13 +1,13 @@ -name: Composer require checker +name: composer dependency analyser on: pull_request: paths: &paths - 'src/**' - 'tests/**' + - '.github/workflows/composer-dependency-analyser.yml' - 'composer.json' - - '.github/workflows/composer-require-checker.yml' - - 'composer-require-checker.json' + - 'composer-dependency-analyser.php' push: branches: ['master'] paths: *paths @@ -20,11 +20,8 @@ concurrency: cancel-in-progress: true jobs: - composer-require-checker: - uses: yiisoft/actions/.github/workflows/composer-require-checker.yml@master + composer-dependency-analyser: + uses: yiisoft/actions/.github/workflows/composer-dependency-analyser.yml@master with: - config: composer-require-checker.json - os: >- - ['ubuntu-latest'] php: >- ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5'] diff --git a/composer-dependency-analyser.php b/composer-dependency-analyser.php new file mode 100644 index 0000000..5b4c026 --- /dev/null +++ b/composer-dependency-analyser.php @@ -0,0 +1,11 @@ +disableComposerAutoloadPathScan() + ->setFileExtensions(['php']) + ->addPathToScan(__DIR__ . '/src', isDev: false) + ->addPathToScan(__DIR__ . '/tests', isDev: true); diff --git a/composer-require-checker.json b/composer-require-checker.json deleted file mode 100644 index 2b17420..0000000 --- a/composer-require-checker.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "symbol-whitelist": [ - "PhpParser\\Node", - "PhpParser\\Node\\Stmt\\ClassMethod", - "Rector\\CodeQuality\\Rector\\Class_\\InlineConstructorDefaultToPropertyRector", - "Rector\\Php74\\Rector\\Closure\\ClosureToArrowFunctionRector", - "Rector\\Php81\\Rector\\FuncCall\\NullToStrictStringFuncCallArgRector", - "Rector\\Php81\\Rector\\Property\\ReadOnlyPropertyRector", - "Rector\\Rector\\AbstractRector", - "Symplify\\RuleDocGenerator\\Contract\\DocumentedRuleInterface", - "Symplify\\RuleDocGenerator\\ValueObject\\CodeSample\\CodeSample", - "Symplify\\RuleDocGenerator\\ValueObject\\RuleDefinition", - "null", "true", "false", - "static", "self", "parent", - "array", "string", "int", "float", "bool", "iterable", "callable", "void", "object", "mixed", "never" - ], - "php-core-extensions": [ - "Core", - "date", - "json", - "hash", - "pcre", - "Phar", - "Reflection", - "SPL", - "standard" - ], - "scan-files": [] -} diff --git a/composer.json b/composer.json index f45066d..5e902df 100644 --- a/composer.json +++ b/composer.json @@ -29,11 +29,12 @@ "require": { "php": "^7.4 || ^8.0", "friendsofphp/php-cs-fixer": "^3.92.5", + "nikic/php-parser": "^4.19", "rector/rector": "^2.0" }, "require-dev": { - "maglnet/composer-require-checker": "^3.8.0 || ^4.7.1", "phpunit/phpunit": "^9.6.31", + "shipmonk/composer-dependency-analyser": "^1.8", "vimeo/psalm": "^5.26.1 || ^6.10.3" }, "autoload": { @@ -54,6 +55,7 @@ }, "scripts": { "test": "phpunit", - "cs-fix": "php-cs-fixer fix" + "cs-fix": "php-cs-fixer fix", + "dependency-analyser": "composer-dependency-analyser" } } diff --git a/docs/internals.md b/docs/internals.md index a51bbd3..23f4da8 100644 --- a/docs/internals.md +++ b/docs/internals.md @@ -33,9 +33,9 @@ use either newest or any specific version of PHP: ## Dependencies -Use [ComposerRequireChecker](https://github.com/maglnet/ComposerRequireChecker) to detect transitive -[Composer](https://getcomposer.org) dependencies: +Use [Composer Dependency Analyser](https://github.com/shipmonk-rnd/composer-dependency-analyser) to detect unknown, +shadow, and unused [Composer](https://getcomposer.org) dependencies: ```shell -./vendor/bin/composer-require-checker +./vendor/bin/composer-dependency-analyser ``` From 5573d4bebec48da8b2e2de426fd0d40b7d79d024 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Sat, 8 Aug 2026 17:04:42 +0300 Subject: [PATCH 2/4] fix --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5e902df..9a9fed7 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,7 @@ "require": { "php": "^7.4 || ^8.0", "friendsofphp/php-cs-fixer": "^3.92.5", - "nikic/php-parser": "^4.19", + "nikic/php-parser": "^4 || ^5", "rector/rector": "^2.0" }, "require-dev": { From 910d4365e9a13dff7481793b00fcb9f4d0f059ff Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Sat, 8 Aug 2026 17:11:17 +0300 Subject: [PATCH 3/4] fix --- composer-dependency-analyser.php | 6 ++++-- composer.json | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/composer-dependency-analyser.php b/composer-dependency-analyser.php index 5b4c026..5c79932 100644 --- a/composer-dependency-analyser.php +++ b/composer-dependency-analyser.php @@ -3,9 +3,11 @@ declare(strict_types=1); use ShipMonk\ComposerDependencyAnalyser\Config\Configuration; +use ShipMonk\ComposerDependencyAnalyser\Config\ErrorType; return (new Configuration()) ->disableComposerAutoloadPathScan() ->setFileExtensions(['php']) - ->addPathToScan(__DIR__ . '/src', isDev: false) - ->addPathToScan(__DIR__ . '/tests', isDev: true); + ->addPathToScan(__DIR__ . '/src', false) + ->addPathToScan(__DIR__ . '/tests', true) + ->ignoreErrorsOnPackage('nikic/php-parser', [ErrorType::SHADOW_DEPENDENCY]); diff --git a/composer.json b/composer.json index 9a9fed7..502fee7 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,6 @@ "require": { "php": "^7.4 || ^8.0", "friendsofphp/php-cs-fixer": "^3.92.5", - "nikic/php-parser": "^4 || ^5", "rector/rector": "^2.0" }, "require-dev": { From a33b7bb067292f47cd833eeb6f3bc77ca0b53243 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Sat, 8 Aug 2026 17:20:40 +0300 Subject: [PATCH 4/4] fix --- .github/workflows/bc.yml | 1 + .roave-backward-compatibility-check.xml | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 .roave-backward-compatibility-check.xml diff --git a/.github/workflows/bc.yml b/.github/workflows/bc.yml index e429e08..5d3dfa5 100644 --- a/.github/workflows/bc.yml +++ b/.github/workflows/bc.yml @@ -4,6 +4,7 @@ on: pull_request: paths: &paths - 'src/**' + - '.roave-backward-compatibility-check.xml' - 'composer.json' - '.github/workflows/bc.yml' push: diff --git a/.roave-backward-compatibility-check.xml b/.roave-backward-compatibility-check.xml new file mode 100644 index 0000000..932800c --- /dev/null +++ b/.roave-backward-compatibility-check.xml @@ -0,0 +1,6 @@ + + + #\[BC\] SKIPPED: Roave\\BetterReflection\\Reflection\\ReflectionClass "Rector\\# + +