From 6f84a3d480431c82791ee2cbf5b23c14ca85addc Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Sat, 8 Aug 2026 08:21:12 +0300 Subject: [PATCH] Add Composer Dependency Analyser --- .../composer-dependency-analyser.yml | 29 +++++++++++++++ .../workflows/composer-require-checker.yml | 36 ------------------- composer-dependency-analyser.php | 20 +++++++++++ composer-require-checker.json | 13 ------- composer.json | 5 ++- docs/internals.md | 6 ++-- 6 files changed, 56 insertions(+), 53 deletions(-) create mode 100644 .github/workflows/composer-dependency-analyser.yml delete mode 100644 .github/workflows/composer-require-checker.yml create mode 100644 composer-dependency-analyser.php delete mode 100644 composer-require-checker.json diff --git a/.github/workflows/composer-dependency-analyser.yml b/.github/workflows/composer-dependency-analyser.yml new file mode 100644 index 00000000..f0a51cfd --- /dev/null +++ b/.github/workflows/composer-dependency-analyser.yml @@ -0,0 +1,29 @@ +name: composer dependency analyser + +on: + pull_request: + paths: &paths + - 'config/**' + - 'src/**' + - 'stubs/**' + - 'tests/**' + - '.github/workflows/composer-dependency-analyser.yml' + - 'composer.json' + - 'composer-dependency-analyser.php' + push: + branches: ['master'] + paths: *paths + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + composer-dependency-analyser: + uses: yiisoft/actions/.github/workflows/composer-dependency-analyser.yml@master + with: + php: >- + ['8.1', '8.2', '8.3', '8.4', '8.5'] diff --git a/.github/workflows/composer-require-checker.yml b/.github/workflows/composer-require-checker.yml deleted file mode 100644 index b7d1b7d8..00000000 --- a/.github/workflows/composer-require-checker.yml +++ /dev/null @@ -1,36 +0,0 @@ -on: - pull_request: - paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' - - 'infection.json.dist' - - 'phpunit.xml.dist' - - 'psalm.xml' - - push: - branches: ['master'] - paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' - - 'infection.json.dist' - - 'phpunit.xml.dist' - - 'psalm.xml' - -name: Composer require checker - -permissions: - contents: read -jobs: - composer-require-checker: - uses: yiisoft/actions/.github/workflows/composer-require-checker.yml@master - with: - os: >- - ['ubuntu-latest'] - php: >- - ['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 00000000..3b7abb78 --- /dev/null +++ b/composer-dependency-analyser.php @@ -0,0 +1,20 @@ +disableComposerAutoloadPathScan() + ->setFileExtensions(['php']) + ->addPathToScan(__DIR__ . '/config', isDev: false) + ->addPathToScan(__DIR__ . '/src', isDev: false) + ->addPathToScan(__DIR__ . '/stubs', isDev: false) + ->addPathToScan(__DIR__ . '/tests', isDev: true) + // ext-pcntl / ext-posix are optional (see "suggest" in composer.json): only needed when + // using `Yiisoft\Queue\Cli\SignalLoop` and its tests, not for the package to function. + ->ignoreErrorsOnExtensions(['ext-pcntl', 'ext-posix'], [ErrorType::SHADOW_DEPENDENCY]) + // yiisoft/yii-debug integration in src/Debug is an optional debug panel collector, only + // loaded when the consumer wires up yiisoft/yii-debug themselves. + ->ignoreErrorsOnPackages(['yiisoft/yii-debug'], [ErrorType::DEV_DEPENDENCY_IN_PROD]); diff --git a/composer-require-checker.json b/composer-require-checker.json deleted file mode 100644 index a7e9d6c7..00000000 --- a/composer-require-checker.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "symbol-whitelist": [ - "Yiisoft\\Yii\\Debug\\Collector\\CollectorTrait", - "Yiisoft\\Yii\\Debug\\Collector\\SummaryCollectorInterface", - "pcntl_signal", - "pcntl_signal_dispatch", - "SIGCONT", - "SIGHUP", - "SIGINT", - "SIGTERM", - "SIGTSTP" - ] -} diff --git a/composer.json b/composer.json index 82389af8..91ca93d6 100644 --- a/composer.json +++ b/composer.json @@ -48,11 +48,11 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.95.11", - "maglnet/composer-require-checker": "^4.7.1", "phpbench/phpbench": "^1.4.3", "phpunit/phpunit": "^10.5.63", "rector/rector": "^2.5.2", "roave/infection-static-analysis-plugin": "^1.35", + "shipmonk/composer-dependency-analyser": "^1.8", "vimeo/psalm": "^5.26.1 || ^6.16.1", "yiisoft/code-style": "^1.0", "yiisoft/test-support": "^3.2.0", @@ -91,5 +91,8 @@ "composer/package-versions-deprecated": true, "yiisoft/config": false } + }, + "scripts": { + "dependency-analyser": "composer-dependency-analyser" } } diff --git a/docs/internals.md b/docs/internals.md index 087a514a..b77907c0 100644 --- a/docs/internals.md +++ b/docs/internals.md @@ -36,9 +36,9 @@ use either newest or any specific version of PHP: ## Dependencies -This package uses [composer-require-checker](https://github.com/maglnet/ComposerRequireChecker) to check if -all dependencies are correctly defined in `composer.json`. To run the checker, execute the following command: +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 ```