diff --git a/.github/workflows/composer-require-checker.yml b/.github/workflows/composer-dependency-analyser.yml similarity index 52% rename from .github/workflows/composer-require-checker.yml rename to .github/workflows/composer-dependency-analyser.yml index 893c769cb..c6ebea2b2 100644 --- a/.github/workflows/composer-require-checker.yml +++ b/.github/workflows/composer-dependency-analyser.yml @@ -1,13 +1,14 @@ -name: Composer require checker +name: composer dependency analyser on: pull_request: paths: &paths - 'config/**' - 'src/**' - - '.github/workflows/composer-require-checker.yml' + - 'tests/**' + - '.github/workflows/composer-dependency-analyser.yml' - 'composer.json' - - 'composer-require-checker.json' + - 'composer-dependency-analyser.php' push: branches: ['master'] paths: *paths @@ -20,11 +21,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: - os: >- - ['ubuntu-latest'] php: >- ['8.1', '8.2', '8.3', '8.4', '8.5'] - config: ./composer-require-checker.json diff --git a/composer-dependency-analyser.php b/composer-dependency-analyser.php new file mode 100644 index 000000000..533941e3c --- /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__ . '/tests', isDev: true) + // Optional PHP extensions used by specific rules only, declared in "suggest". + ->ignoreErrorsOnExtensions(['ext-fileinfo', 'ext-intl'], [ErrorType::SHADOW_DEPENDENCY]) + // Optional integrations used conditionally (class_exists()/attributes), intentionally kept as dev dependencies. + ->ignoreErrorsOnPackages( + ['jetbrains/phpstorm-attributes', 'yiisoft/translator-message-php', '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 51c259729..000000000 --- a/composer-require-checker.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "symbol-whitelist": [ - "Yiisoft\\Yii\\Debug\\Collector\\CollectorTrait", - "Yiisoft\\Yii\\Debug\\Collector\\SummaryCollectorInterface", - "JetBrains\\PhpStorm\\ArrayShape", - "JetBrains\\PhpStorm\\ExpectedValues", - "JetBrains\\PhpStorm\\Language", - "json_validate" - ], - "php-core-extensions": [ - "Core", - "date", - "json", - "pcre", - "Phar", - "Reflection", - "SPL", - "standard", - "fileinfo", - "intl" - ], - "scan-files": [] -} diff --git a/composer.json b/composer.json index 522ee9c00..c6a9b6186 100644 --- a/composer.json +++ b/composer.json @@ -40,11 +40,12 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.3", "friendsofphp/php-cs-fixer": "^3.91", + "guzzlehttp/psr7": "^2.13", "jetbrains/phpstorm-attributes": "^1.2", - "maglnet/composer-require-checker": "^4.7.1", "phpbench/phpbench": "^1.4.1", "phpunit/phpunit": "^10.5.46", "rector/rector": "^2.0.16", + "shipmonk/composer-dependency-analyser": "^1.8", "spatie/phpunit-watcher": "^1.24", "yiisoft/di": "^1.3", "yiisoft/test-support": "^3.0.2", @@ -95,6 +96,7 @@ "infection": "vendor/bin/infection", "dry-run": "vendor/bin/rector process --dry-run", "psalm": "vendor/bin/psalm --config=psalm.xml", - "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 9bd4254e2..7a9eb30b4 100644 --- a/docs/internals.md +++ b/docs/internals.md @@ -36,8 +36,12 @@ 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-dependency-analyser +``` ## Translation