Thanks for your interest in contributing!
- Fork and clone the repository
- Follow the build instructions to get a working development environment
- Read ARCHITECTURE.md for an overview of how the codebase is structured
All five CI checks must pass with zero warnings and zero failures:
cargo test
cargo clippy -- -D warnings
cargo clippy --tests -- -D warnings
cargo fmt --check
php -l example.phpNote that clippy runs twice, once for library code and once including test code.
- Run
cargo fmtbefore committing - Fix clippy warnings rather than suppressing them. Avoid
#[allow(clippy::...)]unless truly necessary. - Add
///doc comments to all public functions and struct fields
- Integration tests go in
tests/completion_*.rsortests/definition_*.rs, one file per feature area - Use
create_test_backend()fromtests/common/mod.rsfor same-file tests - Use
create_psr4_workspace()for cross-file / PSR-4 tests - Test the happy path, edge cases, and interactions with existing features
- When adding a feature, update
example.phpwith working examples (and verify withphp -l example.php)
See BUILDING.md for more on running tests and manual LSP testing.
Open an issue on GitHub with:
- What you expected to happen
- What actually happened
- Steps to reproduce (a minimal PHP snippet is ideal)