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..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.4", + "rector/swiss-knife": "^2.6", "symplify/easy-coding-standard": "^13.2", "symplify/phpstan-extensions": "^12.0", "symplify/phpstan-rules": "^14.13.1", @@ -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",