diff --git a/.gitattributes b/.gitattributes index 9daaa22d..391a4384 100644 --- a/.gitattributes +++ b/.gitattributes @@ -12,3 +12,4 @@ /Makefile export-ignore /psalm-baseline.xml export-ignore /psalm.xml export-ignore +/rector.php export-ignore diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 01c24919..21dd5340 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,3 @@ +# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners + * @ergebnis-bot @localheinz diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index a8c04a0c..4cc7edf5 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -6,7 +6,6 @@ For details, take a look at the following workflow configuration files: - [`workflows/integrate.yaml`](workflows/integrate.yaml) - [`workflows/merge.yaml`](workflows/merge.yaml) -- [`workflows/prune.yaml`](workflows/prune.yaml) - [`workflows/release.yaml`](workflows/release.yaml) - [`workflows/renew.yaml`](workflows/renew.yaml) - [`workflows/triage.yaml`](workflows/triage.yaml) @@ -47,9 +46,45 @@ make dependency-analysis to run a dependency analysis. +## Mutation Tests + +We are using [`infection/infection`](https://github.com/infection/infection) to ensure a minimum quality of the tests. + +Enable `Xdebug` and run + +```sh +make mutation-tests +``` + +to run mutation tests. + +## Refactoring + +We are using [`rector/rector`](https://github.com/rectorphp/rector) to automatically refactor code. + +Run + +```sh +make refactoring +``` + +to automatically refactor code. + +## Security Analysis + +We are using [`composer`](https://github.com/composer/composer) to run a security analysis. + +Run + +```sh +make security-analysis +``` + +to run a security analysis. + ## Static Code Analysis -We are using [`vimeo/psalm`](https://github.com/vimeo/psalm) to statically analyze the code. +We are using [`phpstan/phpstan`](https://github.com/phpstan/phpstan) and [`vimeo/psalm`](https://github.com/vimeo/psalm) to statically analyze the code. Run @@ -83,18 +118,6 @@ make tests to run all the tests. -## Mutation Tests - -We are using [`infection/infection`](https://github.com/infection/infection) to ensure a minimum quality of the tests. - -Enable `pcov` or `Xdebug` and run - -```sh -make mutation-tests -``` - -to run mutation tests. - ## Extra lazy? Run @@ -103,7 +126,7 @@ Run make ``` -to enforce coding standards, run a static code analysis, and run tests! +to automatically refactor code, enforce coding standards, run a static code analysis, and run tests! ## Help diff --git a/.github/settings.yml b/.github/settings.yml index 026ae1ba..133208e2 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -13,21 +13,23 @@ branches: require_code_owner_reviews: true required_approving_review_count: 1 required_status_checks: - contexts: - - "Code Coverage (8.0, locked)" - - "Coding Standards (8.0, locked)" - - "Dependency Analysis (8.0, locked)" - - "Mutation Tests (8.0, locked)" - - "Static Code Analysis (8.0, locked)" - - "Tests (8.0, highest)" - - "Tests (8.0, locked)" - - "Tests (8.0, lowest)" - - "Tests (8.1, highest)" - - "Tests (8.1, locked)" - - "Tests (8.1, lowest)" - - "Tests (8.2, highest)" - - "Tests (8.2, locked)" - - "Tests (8.2, lowest)" + checks: + - context: "Code Coverage (8.0, locked)" + - context: "Coding Standards (8.0, locked)" + - context: "Dependency Analysis (8.0, locked)" + - context: "Mutation Tests (8.0, locked)" + - context: "Refactoring (8.0, locked)" + - context: "Security Analysis (8.0, locked)" + - context: "Static Code Analysis (8.0, locked)" + - context: "Tests (8.0, highest)" + - context: "Tests (8.0, locked)" + - context: "Tests (8.0, lowest)" + - context: "Tests (8.1, highest)" + - context: "Tests (8.1, locked)" + - context: "Tests (8.1, lowest)" + - context: "Tests (8.2, highest)" + - context: "Tests (8.2, locked)" + - context: "Tests (8.2, lowest)" strict: false restrictions: @@ -65,10 +67,6 @@ labels: color: "ee0701" description: "" - - name: "stale" - color: "eeeeee" - description: "" - # https://docs.github.com/en/rest/reference/repos#update-a-repository repository: @@ -81,6 +79,7 @@ repository: description: ":page_with_curl: Provides JSON pointer as a value object." enable_automated_security_fixes: true enable_vulnerability_alerts: true + has_discussions: false has_downloads: true has_issues: true has_pages: false diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index 1fd95be0..4dcfb647 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -57,12 +57,13 @@ jobs: - name: "Collect code coverage with Xdebug and phpunit/phpunit" env: XDEBUG_MODE: "coverage" - run: "vendor/bin/phpunit --configuration=test/Unit/phpunit.xml --coverage-clover=.build/phpunit/logs/clover.xml" + run: "vendor/bin/phpunit --colors=always --configuration=test/Unit/phpunit.xml --coverage-clover=.build/phpunit/logs/clover.xml" - - name: "Send code coverage report to Codecov.io" - env: - CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" - run: "bash <(curl -s https://codecov.io/bash)" + - name: "Send code coverage report to codecov.io" + uses: "codecov/codecov-action@v3.1.3" + with: + files: ".build/phpunit/logs/clover.xml" + token: "${{ secrets.CODECOV_TOKEN }}" coding-standards: name: "Coding Standards" @@ -82,7 +83,7 @@ jobs: uses: "actions/checkout@v3.5.2" - name: "Lint YAML files" - uses: "ibiqlik/action-yamllint@v3.1" + uses: "ibiqlik/action-yamllint@v3.1.1" with: config_file: ".yamllint.yaml" file_or_dir: "." @@ -132,7 +133,7 @@ jobs: php-${{ matrix.php-version }}-php-cs-fixer- - name: "Run friendsofphp/php-cs-fixer" - run: "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --diff --dry-run --verbose" + run: "vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.php --diff --dry-run --verbose" dependency-analysis: name: "Dependency Analysis" @@ -157,6 +158,7 @@ jobs: coverage: "none" extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" + tools: "phive" - name: "Set up problem matchers for PHP" run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" @@ -176,6 +178,11 @@ jobs: with: dependencies: "${{ matrix.dependencies }}" + - name: "Install dependencies with phive" + uses: "ergebnis/.github/actions/phive/install@1.8.0" + with: + trust-gpg-keys: "0x033E5F8D801A2F8D" + - name: "Run maglnet/composer-require-checker" run: ".phive/composer-require-checker check --config-file=$(pwd)/composer-require-checker.json" @@ -224,7 +231,97 @@ jobs: - name: "Run mutation tests with Xdebug and infection/infection" env: XDEBUG_MODE: "coverage" - run: "vendor/bin/infection --configuration=infection.json --logger-github" + run: "vendor/bin/infection --ansi --configuration=infection.json --logger-github" + + refactoring: + name: "Refactoring" + + runs-on: "ubuntu-latest" + + strategy: + matrix: + php-version: + - "8.0" + + dependencies: + - "locked" + + steps: + - name: "Checkout" + uses: "actions/checkout@v3.5.2" + + - name: "Set up PHP" + uses: "shivammathur/setup-php@2.25.1" + with: + coverage: "none" + extensions: "none, ctype, dom, intl, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" + php-version: "${{ matrix.php-version }}" + + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + + - name: "Determine composer cache directory" + uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.8.0" + + - name: "Cache dependencies installed with composer" + uses: "actions/cache@v3.3.1" + with: + path: "${{ env.COMPOSER_CACHE_DIR }}" + key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" + restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" + + - name: "Install ${{ matrix.dependencies }} dependencies with composer" + uses: "ergebnis/.github/actions/composer/install@1.8.0" + with: + dependencies: "${{ matrix.dependencies }}" + + - name: "Create cache directory for rector/rector" + run: "mkdir -p .build/rector" + + - name: "Cache cache directory for rector/rector" + uses: "actions/cache@v3.3.1" + with: + path: ".build/rector" + key: "php-${{ matrix.php-version }}-rector-${{ github.ref_name }}" + restore-keys: | + php-${{ matrix.php-version }}-rector-main + php-${{ matrix.php-version }}-rector- + + - name: "Run automated refactoring with rector/rector" + run: "vendor/bin/rector --ansi --config=rector.php --dry-run" + + security-analysis: + name: "Security Analysis" + + runs-on: "ubuntu-latest" + + strategy: + matrix: + php-version: + - "8.0" + + dependencies: + - "locked" + + steps: + - name: "Checkout" + uses: "actions/checkout@v3.5.2" + + - name: "Set up PHP" + uses: "shivammathur/setup-php@2.25.1" + with: + coverage: "none" + extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" + php-version: "${{ matrix.php-version }}" + + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + + - name: "Validate composer.json and composer.lock" + run: "composer validate --ansi --strict" + + - name: "Check installed packages for security vulnerability advisories" + run: "composer audit --ansi" static-code-analysis: name: "Static Code Analysis" @@ -247,7 +344,7 @@ jobs: uses: "shivammathur/setup-php@2.25.1" with: coverage: "none" - extensions: "none, ctype, curl, dom, json, mbstring, pcntl, phar, posix, simplexml, tokenizer, xml, xmlwriter" + extensions: "none, ctype, curl, dom, json, mbstring, opcache, pcntl, phar, posix, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" - name: "Set up problem matchers for PHP" @@ -324,4 +421,4 @@ jobs: dependencies: "${{ matrix.dependencies }}" - name: "Run unit tests with phpunit/phpunit" - run: "vendor/bin/phpunit --configuration=test/Unit/phpunit.xml" + run: "vendor/bin/phpunit --colors=always --configuration=test/Unit/phpunit.xml" diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index 5ad9183e..39279b01 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -33,8 +33,8 @@ jobs: - name: "Assign @ergebnis-bot" uses: "ergebnis/.github/actions/github/pull-request/add-assignee@1.8.0" with: - github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" assignee: "ergebnis-bot" + github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - name: "Approve pull request" uses: "ergebnis/.github/actions/github/pull-request/approve@1.8.0" diff --git a/.github/workflows/prune.yaml b/.github/workflows/prune.yaml deleted file mode 100644 index b328f7f9..00000000 --- a/.github/workflows/prune.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# https://docs.github.com/en/actions - -name: "Prune" - -on: # yamllint disable-line rule:truthy - schedule: - - cron: "0 12 * * *" - -env: - DAYS_BEFORE_CLOSE: 14 - DAYS_BEFORE_STALE: 180 - -jobs: - prune: - name: "Issues" - - runs-on: "ubuntu-latest" - - steps: - - name: "Prune issues and pull requests" - uses: "actions/stale@v8.0.0" - with: - days-before-close: "${{ env.DAYS_BEFORE_CLOSE }}" - days-before-stale: "${{ env.DAYS_BEFORE_STALE }}" - repo-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - stale-issue-label: "stale" - stale-issue-message: | - Since this issue has not had any activity within the last ${{ env.DAYS_BEFORE_STALE }} days, I have marked it as stale. - - I will close it if no further activity occurs within the next ${{ env.DAYS_BEFORE_CLOSE }} days. - stale-pr-label: "stale" - stale-pr-message: | - Since this pull request has not had any activity within the last ${{ env.DAYS_BEFORE_STALE }} days, I have marked it as stale. - - I will close it if no further activity occurs within the next ${{ env.DAYS_BEFORE_CLOSE }} days. diff --git a/.github/workflows/renew.yaml b/.github/workflows/renew.yaml index 9958199a..efac7759 100644 --- a/.github/workflows/renew.yaml +++ b/.github/workflows/renew.yaml @@ -67,7 +67,7 @@ jobs: php-${{ matrix.php-version }}-php-cs-fixer- - name: "Run friendsofphp/php-cs-fixer" - run: "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --diff --verbose" + run: "vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.php --diff --verbose" - name: "Commit modified files" uses: "stefanzweifel/git-auto-commit-action@v4.16.0" diff --git a/.gitignore b/.gitignore index 0d234cb8..c6b4dc9c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /.build/ /.notes/ +/.phive/ /vendor/ +!/.phive/phars.xml diff --git a/.phive/phars.xml b/.phive/phars.xml index d7a8a866..bf021503 100644 --- a/.phive/phars.xml +++ b/.phive/phars.xml @@ -1,4 +1,4 @@ - + diff --git a/Makefile b/Makefile index 38951c97..fa679990 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,20 @@ .PHONY: it -it: coding-standards static-code-analysis tests ## Runs the coding-standards, static-code-analysis, and tests targets +it: refactoring coding-standards security-analysis static-code-analysis tests ## Runs the refactoring, coding-standards, security-analysis, static-code-analysis, and tests targets .PHONY: code-coverage code-coverage: vendor ## Collects coverage from running unit tests with phpunit/phpunit - mkdir -p .build/phpunit + mkdir -p .build/phpunit/ vendor/bin/phpunit --configuration=test/Unit/phpunit.xml --coverage-text .PHONY: coding-standards -coding-standards: vendor ## Normalizes composer.json with ergebnis/composer-normalize, lints YAML files with yamllint and fixes code style issues with friendsofphp/php-cs-fixer - composer normalize +coding-standards: vendor ## Lints YAML files with yamllint, normalizes composer.json with ergebnis/composer-normalize, and fixes code style issues with friendsofphp/php-cs-fixer yamllint -c .yamllint.yaml --strict . - mkdir -p .build/php-cs-fixer + composer normalize + mkdir -p .build/php-cs-fixer/ vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --diff --verbose .PHONY: dependency-analysis -dependency-analysis: vendor ## Runs a dependency analysis with maglnet/composer-require-checker +dependency-analysis: phive vendor ## Runs a dependency analysis with maglnet/composer-require-checker .phive/composer-require-checker check --config-file=$(shell pwd)/composer-require-checker.json .PHONY: help @@ -23,24 +23,38 @@ help: ## Displays this list of targets with descriptions .PHONY: mutation-tests mutation-tests: vendor ## Runs mutation tests with infection/infection - mkdir -p .build/infection + mkdir -p .build/infection/ vendor/bin/infection --configuration=infection.json +.PHONY: phive +phive: .phive ## Installs dependencies with phive + mkdir -p .build/phive/ + PHIVE_HOME=.build/phive phive install --trust-gpg-keys 0x033E5F8D801A2F8D + +.PHONY: refactoring +refactoring: vendor ## Runs automated refactoring with rector/rector + mkdir -p .build/rector/ + vendor/bin/rector process --config=rector.php + +.PHONY: security-analysis +security-analysis: vendor ## Runs a security analysis with composer + composer audit + .PHONY: static-code-analysis static-code-analysis: vendor ## Runs a static code analysis with vimeo/psalm - mkdir -p .build/psalm + mkdir -p .build/psalm/ vendor/bin/psalm --config=psalm.xml --clear-cache vendor/bin/psalm --config=psalm.xml --show-info=false --stats --threads=4 .PHONY: static-code-analysis-baseline static-code-analysis-baseline: vendor ## Generates a baseline for static code analysis with vimeo/psalm - mkdir -p .build/psalm + mkdir -p .build/psalm/ vendor/bin/psalm --config=psalm.xml --clear-cache vendor/bin/psalm --config=psalm.xml --set-baseline=psalm-baseline.xml .PHONY: tests tests: vendor ## Runs unit tests with phpunit/phpunit - mkdir -p .build/phpunit + mkdir -p .build/phpunit/ vendor/bin/phpunit --configuration=test/Unit/phpunit.xml vendor: composer.json composer.lock diff --git a/README.md b/README.md index 8d04b57c..516b295c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # json-pointer [![Integrate](https://github.com/ergebnis/json-pointer/workflows/Integrate/badge.svg)](https://github.com/ergebnis/json-pointer/actions) -[![Prune](https://github.com/ergebnis/json-pointer/workflows/Prune/badge.svg)](https://github.com/ergebnis/json-pointer/actions) +[![Merge](https://github.com/ergebnis/json-pointer/workflows/Merge/badge.svg)](https://github.com/ergebnis/json-pointer/actions) [![Release](https://github.com/ergebnis/json-pointer/workflows/Release/badge.svg)](https://github.com/ergebnis/json-pointer/actions) [![Renew](https://github.com/ergebnis/json-pointer/workflows/Renew/badge.svg)](https://github.com/ergebnis/json-pointer/actions) @@ -10,6 +10,7 @@ [![Latest Stable Version](https://poser.pugx.org/ergebnis/json-pointer/v/stable)](https://packagist.org/packages/ergebnis/json-pointer) [![Total Downloads](https://poser.pugx.org/ergebnis/json-pointer/downloads)](https://packagist.org/packages/ergebnis/json-pointer) +[![Monthly Downloads](http://poser.pugx.org/ergebnis/json-pointer/d/monthly)](https://packagist.org/packages/ergebnis/json-pointer) Provides [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901) as a value object. @@ -327,6 +328,6 @@ This package is licensed using the MIT License. Please have a look at [`LICENSE.md`](LICENSE.md). -## Curious what I am building? +## Curious what I am up to? -:mailbox_with_mail: [Subscribe to my list](https://localheinz.com/projects/), and I will occasionally send you an email to let you know what I am working on. +Follow me on [Twitter](https://twitter.com/intent/follow?screen_name=localheinz)! diff --git a/composer-require-checker.json b/composer-require-checker.json index 67d0aa16..b8b091ad 100644 --- a/composer-require-checker.json +++ b/composer-require-checker.json @@ -1,19 +1,3 @@ { - "symbol-whitelist": [ - "array", - "bool", - "callable", - "false", - "float", - "int", - "iterable", - "null", - "object", - "parent", - "self", - "static", - "string", - "true", - "void" - ] + "symbol-whitelist": [] } diff --git a/composer.json b/composer.json index 428f14cd..ef38eaa6 100644 --- a/composer.json +++ b/composer.json @@ -31,6 +31,7 @@ "infection/infection": "~0.26.19", "phpunit/phpunit": "^9.6.7", "psalm/plugin-phpunit": "~0.18.4", + "rector/rector": "~0.15.25", "vimeo/psalm": "^5.9.0" }, "autoload": { diff --git a/composer.lock b/composer.lock index 5de62897..36eee261 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2e9a025513ca17cc69c76a2dc8185ea6", + "content-hash": "6a16d5718f815644d1a5177c26bf7224", "packages": [], "packages-dev": [ { @@ -2620,6 +2620,68 @@ }, "time": "2023-02-07T18:11:17+00:00" }, + { + "name": "phpstan/phpstan", + "version": "1.10.14", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "d232901b09e67538e5c86a724be841bea5768a7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d232901b09e67538e5c86a724be841bea5768a7c", + "reference": "d232901b09e67538e5c86a724be841bea5768a7c", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2023-04-19T13:47:27+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "9.2.26", @@ -3303,6 +3365,67 @@ }, "time": "2021-07-14T16:46:02+00:00" }, + { + "name": "rector/rector", + "version": "0.15.25", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "015935c7ed9e48a4f5895ba974f337e20a263841" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/015935c7ed9e48a4f5895ba974f337e20a263841", + "reference": "015935c7ed9e48a4f5895ba974f337e20a263841", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.10.14" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.15-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/0.15.25" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2023-04-20T16:07:39+00:00" + }, { "name": "sanmai/later", "version": "0.1.2", diff --git a/infection.json b/infection.json index a437f0c4..98476cbd 100644 --- a/infection.json +++ b/infection.json @@ -4,7 +4,7 @@ "text": ".build/infection/infection-log.txt" }, "minCoveredMsi": 100, - "minMsi": 84, + "minMsi": 100, "phpUnit": { "configDir": "test\/Unit" }, diff --git a/psalm.xml b/psalm.xml index 12df516b..00713658 100644 --- a/psalm.xml +++ b/psalm.xml @@ -6,6 +6,8 @@ cacheDirectory=".build/psalm" errorBaseline="psalm-baseline.xml" errorLevel="1" + findUnusedBaselineEntry="true" + findUnusedCode="true" findUnusedVariablesAndParams="true" resolveFromConfigFile="true" strictBinaryOperands="true" @@ -17,6 +19,7 @@ + diff --git a/rector.php b/rector.php new file mode 100644 index 00000000..208d7a60 --- /dev/null +++ b/rector.php @@ -0,0 +1,33 @@ +cacheDirectory(__DIR__ . '/.build/rector/'); + + $rectorConfig->import(__DIR__ . '/vendor/fakerphp/faker/rector-migrate.php'); + + $rectorConfig->paths([ + __DIR__ . '/src/', + __DIR__ . '/test/', + ]); + + $rectorConfig->phpVersion(Core\ValueObject\PhpVersion::PHP_80); + + $rectorConfig->sets([ + PHPUnit\Set\PHPUnitSetList::PHPUNIT_90, + ]); +}; diff --git a/test/Util/Helper.php b/test/Util/Helper.php index 8d7e8649..ae3322d5 100644 --- a/test/Util/Helper.php +++ b/test/Util/Helper.php @@ -21,7 +21,7 @@ trait Helper final protected static function faker(string $locale = 'en_US'): Generator { /** - * @var array $fakers + * @var array */ static $fakers = [];