Quick Event is an orienteering event management application. On the competition day it is a key part of data collection and results lists generation. A typical Czech orienteering event has anywhere between 400 and 1500 runners whose data must be processed in approximately four hour long window at the competition site. This task demands reliable software as failures have potential for making large number of people irritated and damaging organizing club's reputation.
What has been done so far:
- The original author ran Quick Event through Valgrind and Clang
- I ran Quick Event with GCC Address Sanitizer without any crashes
- I set up Coverity Scan for the project (https://scan.coverity.com/projects/quickbox)
- Coverity didn't identify any severe bugs, most of the medium and low severity defects have been fixed
Overall assessment so far is that the project is in good shape in terms of reliability but the code in some places is ugly.
- Use other GCC features to spot errors - Undefined Behavior Sanitizer, extra warnings
- Create unit tests and start refactoring the worst looking parts of code (https://github.com/fvacek/quickbox/blob/master/libqf/libqfcore/src/model/sqltablemodel.cpp#L138, https://github.com/fvacek/quickbox/blob/master/quickevent/app/plugins/qml/Receipts/src/receiptsprinter.cpp#L300)
- Document the code
- After basic hardening is done, extend the functionality:
- Allow processing event info from SI box backup memory readout
- Support bar code / QR code tagged paper punch cards