# Development

## Guidelines

Please have a look at the following pages:

- Contributing to Shaarli
- Static analysis - patches should try to stick to the PHP Standard Recommendations (PSR), especially:
  - PSR-1 - Basic Coding Standard
  - PSR-2 - Coding Style Guide
- Unit tests
- GnuPG signature for tags/releases

## Continuous integration tools

### Local development

A `Makefile` is available to perform project-related operations:

- Documentation - generate a local HTML copy of the GitHub wiki
- Static analysis - check that the code is compliant to PHP conventions
- Unit tests - ensure there are no regressions introduced by new commits

### Automatic builds

Travis CI is a Continuous Integration build server, that runs a build:

- each time a commit is merged to the mainline (`master` branch)
- each time a Pull Request is submitted or updated

A build is composed of several jobs: one for each supported PHP version (see Server requirements).

Each build job:

- updates Composer
- installs 3rd-party test dependencies with Composer
- runs Unit tests

After all jobs have finished, Travis returns the results to GitHub:

- a status icon represents the result for the `master` branch:
- Pull Requests are updated with the Travis result
  - Green: all tests have passed
  - Red: some tests failed
  - Orange: tests are pending