1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-11 16:59:45 +01:00
psalm/docs/contributing/index.md
2021-01-29 11:47:08 +01:00

38 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Contributing to Psalm
Psalm is made possible through the contributions of almost 200 developers.
Hopefully you can be one of them?
## Getting started
[Heres a rough guide to the codebase](how_psalm_works.md).
I've also put together [a list of Psalms complexities](what_makes_psalm_complicated.md).
Are you looking for low-hanging fruit? Here are some [GitHub issues](https://github.com/vimeo/psalm/issues?q=is%3Aissue+is%3Aopen+label%3A%22easy+problems%22) that shouldn't be too difficult to resolve.
### Dont be afraid!
One great thing about working on Psalm is that its _very_ hard to introduce any sort of type error in Psalms codebase. There are almost 5,000 PHPUnit tests, so the risk of you messing up (without the CI system noticing) is very small.
### Why static analysis is cool
Day-to-day PHP programming involves solving concrete problems, but they're rarely very complex. Psalm, on the other hand, attempts to solve a pretty hard collection of problems, which then allows it to detect a ton of bugs in PHP code without actually executing that code.
There's a lot of interesting theory behind the things Psalm does, too. If you want you can go very deep, though you don't need to know really any theory to improve Psalm.
Lastly, working to improve static analysis tools will also make you a better PHP developer it'll help you think more about how values flow through your program.
## Pull Requests
Before you send a pull request, make sure you follow these guidelines:
Run integration checks locally:
- `composer phpcs` - checks the code is properly linted
- `vendor/bin/paratest` - runs PHPUnit tests in parallel
- `./psalm` - runs Psalm on itself
If you're adding new features or fixing bugs, dont forget to add tests!