Last year was quite fruitful for us in terms of setting up several systems and processes to make sure our releases are more sharp and our code is much better. After several great suggestions and some oops! moments, we decided to pull up our socks and kicked off the slow but disciplined process of code review and infusing good quality into our products and projects. These are experiments and we are of course measuring what works best and will continue to tweak our quality process to further strengthen it
We've taken some great steps and implemented several automated checks which will reject bad code. We also thought of sharing them with everyone so everyone can benefit. Here's a list of things that are already implemented or are in the process of being implemented
PHPCS checks for all commits
Since we use a hosted git platform that allows us to add our own hooks, we've created a nice pre-receive hook that rejects all commits if all the PHP code files don't pass the test. Cleanliness is next to godliness, they say so this allows all of us to write beautiful holy code ;) Find below the links to the pre-receive hook and the configuration file
CLI script for JED checker and more rules
The JED checker (thanks to compojoom) has been around for several years, however we're updating it to not just do the JED related checks but make it into a quality checking powerhouse. With plenty more rules like deprecated functions, using PHP core functions instead of Joomla API equivalents this is bound to make all developers write no less than great code. This is still a little WIP and we would share the script and additional rules very soon!
More PHP QA tools
We're aiming to implement more automated QA tools to help our team learn and react faster to changes in PHP and Joomla. By implementing these tools we expect that devs will automatically be on their toes to write excellent code and you can in turn expect continuous improvement in the stability of our products. We're suggesting developers to use the mess detector and dead code detector to make code more efficient. Read more about these tools on http://phpqatools.org/
We're now actively using Selenium to run automated tests for several simple workflows. In some cases we're also setting up the Robot Framework to run headless, completely automated tests directly on the server.
Re-Education and Awareness
Of course with all of the above, nothing beats good old classrooms so we're having some education and awareness programs as well to make sure our team is aware of the reason for these processes and they are on board with the cause!
Document Mistakes and don't repeat them !
We have compiled an exhaustive 'Joomla Mistake Master' to document common Joomla mistakes and a process to continuously update it and ensure that these mistakes are not repeated.
Are you using any more tools that you think would help us ? We would be very happy to learn from you and further improve our QA process. Please use the comments below to let us know what you think