From d8bc87c9e4c6a2a7dac1306b14760a33c1a9160e Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 17 Sep 2026 22:29:06 +0200 Subject: [PATCH 1/3] Add duplicated-code CI check via rector/swiss-knife --- .github/workflows/duplicated_code.yaml | 29 ++++++++++++++++++++++++++ composer.json | 1 + 2 files changed, 30 insertions(+) create mode 100644 .github/workflows/duplicated_code.yaml diff --git a/.github/workflows/duplicated_code.yaml b/.github/workflows/duplicated_code.yaml new file mode 100644 index 00000000..2f87364f --- /dev/null +++ b/.github/workflows/duplicated_code.yaml @@ -0,0 +1,29 @@ +name: Duplicated Code + +on: + pull_request: null + push: + branches: + - main + +env: + COMPOSER_ROOT_VERSION: "dev-main" + +jobs: + duplicated_code: + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - uses: actions/checkout@v4 + + - + uses: shivammathur/setup-php@v2 + with: + php-version: 8.4 + coverage: none + + - uses: "ramsey/composer-install@v2" + + # fails when a large copy-pasted block (>= 150 tokens) is added + - run: composer duplicated-code diff --git a/composer.json b/composer.json index 9b42ed35..61d237e7 100644 --- a/composer.json +++ b/composer.json @@ -46,6 +46,7 @@ "phpunit" ], "phpstan": "vendor/bin/phpstan analyse --ansi", + "duplicated-code": "vendor/bin/swiss-knife duplicated-code src rules --min-tokens 150 --min-lines 5", "check-cs": "vendor/bin/ecs check --ansi", "class-leak": "vendor/bin/class-leak check config src rules --skip-suffix \"Rector\"", "fix-cs": "vendor/bin/ecs check --fix --ansi", From 035898a6853b43da4fde353ec7877c27b072afbe Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 17 Sep 2026 23:02:41 +0200 Subject: [PATCH 2/3] Require rector/swiss-knife ^2.5 for duplicated-code command --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 61d237e7..18b240fe 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "phpunit/phpunit": "^13.2", "rector/jack": "^1.0", "rector/rector-src": "dev-main", - "rector/swiss-knife": "^2.4", + "rector/swiss-knife": "^2.5", "symplify/easy-coding-standard": "^13.2", "symplify/phpstan-extensions": "^12.0", "symplify/phpstan-rules": "^14.13.1", From 0509ff8c6792282c71ec56278473a9ac81d3609e Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 18 Sep 2026 00:21:57 +0200 Subject: [PATCH 3/3] Bump rector/swiss-knife to ^2.6 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 18b240fe..49b24972 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "phpunit/phpunit": "^13.2", "rector/jack": "^1.0", "rector/rector-src": "dev-main", - "rector/swiss-knife": "^2.5", + "rector/swiss-knife": "^2.6", "symplify/easy-coding-standard": "^13.2", "symplify/phpstan-extensions": "^12.0", "symplify/phpstan-rules": "^14.13.1",