Skip to content

Latest commit

 

History

History
153 lines (91 loc) · 2.99 KB

CONTRIBUTING.md

File metadata and controls

153 lines (91 loc) · 2.99 KB

Contributing

We use GitHub Actions as a continuous integration system.

For details, take a look at the following workflow configuration files:

Coding Standards

We use ergebnis/composer-normalize to normalize composer.json.

We use yamllint to enforce coding standards in YAML files.

If you do not have yamllint installed yet, run

brew install yamllint

to install yamllint.

We use symplify/config-transformer to convert YAML configuration files to PHP.

We use friendsofphp/php-cs-fixer to enforce coding standards in PHP files.

Run

make coding-standards

to automatically fix coding standard violations.

Dependency Analysis

We use maglnet/composer-require-checker to prevent the use of unknown symbols in production code.

Run

make dependency-analysis

to run a dependency analysis.

Mutation Tests

We use infection/infection to ensure a minimum quality of the tests.

Enable Xdebug and run

make mutation-tests

to run mutation tests.

Refactoring

We use rector/rector to automatically refactor code.

Run

make refactoring

to automatically refactor code.

Security Analysis

We use composer to run a security analysis.

Run

make security-analysis

to run a security analysis.

Static Code Analysis

We use vimeo/psalm to statically analyze the code.

Run

make static-code-analysis

to run a static code analysis.

We also use the baseline feature of vimeo/psalm.

Run

make static-code-analysis-baseline

to regenerate the baseline in ../psalm-baseline.xml.

❗ Ideally, the baseline should shrink over time.

Symfony

We use symfony/flex to integrate packages into the application.

Run

make symfony

to synchronize recipes.

Tests

We use phpunit/phpunit to drive the development.

Run

make tests

to run all the tests.

Extra lazy?

Run

make

to automatically refactor code, enforce coding standards, run a static code analysis, and run tests!

Help

💡 Run

make help

to display a list of available targets with corresponding descriptions.