# Rector - Reconstruct your Legacy Code to Modern Codebase [![Build Status](https://img.shields.io/travis/RectorPHP/Rector/master.svg?style=flat-square)](https://travis-ci.org/RectorPHP/Rector) [![Coverage Status](https://img.shields.io/coveralls/RectorPHP/Rector/master.svg?style=flat-square)](https://coveralls.io/github/RectorPHP/Rector?branch=master) This tool will **upgrade your application** for you, with focus on open-source projects.

## Install ```bash composer require rector/rector --dev ``` ## How To Reconstruct your Code? ### A. Prepared Sets Fetaured open-source projects have **prepared sets**. You'll find them in [`/src/config/level`](/src/config/level). E.g. Do you need to upgrade to Nette 2.4? 1. Run rector on your `/src` directory ```bash vendor/bin/rector process src --config vendor/bin/rector/src/config/level/nette/nette24.yml ``` Too long? Try `--level` shortcut: ```bash vendor/bin/rector process src --level nette24 ``` 2. Check the Git ``` git diff ``` ### B. Custom Sets 1. Create `rector.yml` with desired Rectors ```yml rectors: - Rector\Rector\Contrib\Nette\Application\InjectPropertyRector ``` 2. Run rector on your `/src` directory ```bash vendor/bin/rector process src ``` 3. Check the Git ``` git diff ``` ### 6 Steps to Add New Rector Just extend `Rector\Rector\AbstractRector`. It will prepare **2 methods** processing the node. ```php public function isCandidate(Node $node): bool { } public function refactor(Node $node): ?Node { } ``` 2. Put it under `namespace Rector\Contrib\;` namespace ```php