Our two-step code review process combines static analysis with other formal software analysis methods such as model checking, weakest
precondition generation and testing.
In the first step, the code review process applies a set of static analysis tools, each of which may be specialised in different
aspects of the code, to generate an initial review report. Some tools may help identify coding defects such as resource leak,
null pointer dereference, array out of bound, etc. Other tools may help to ensure certain coding standards, such as MISRA, are not
violated. The process can also incorporate reviews from human code reviewers into the initial review report.
In the second step, the code review process employs more powerful formal analysis methods in an efficient way by using insights from
the initial review to generate a more refined review report.