It seems that blockchain code written in C++ is prone to obscure but serious bugs such as recently seen in Zcoin.
I know that rewriting Monero in a safer language is not practical in the short-term, and there are various tests run during the build process to check functionality which are helpful.
Given that people will be relying on Monero for cryptographic privacy as well as financial security, and formal verification is some way off; what tools for improving code reliability - such as static code analysis or undefined behavior sanitisation - are (or should be) incorporated into the development process in addition to normal development practices such as unit tests and code reviews?