The Wasp analyser statically detects subtle run-time errors and weak points in a Java source code. The following kinds of errors may be detected:null pointer exception, impermissible cast, array index out of bounds, division by zero, etc.
The following kinds of weak points may be detected:usage of uninitialised variable,unreachable branch in conditional or switch statement,unreachable loop body or catch clause, assignment of variable whose value is never used, abnormal completion of method, etc.
Wasp produces detailed and precise method call graph. The method call graph of a program helps to know for each method what actual methods are called in its body.
Also, for each method you may know where this method may be called. Method call graphs produced other existing tools are imprecise dueto weak analyses applied.
In comparison with other static error analysers, Wasp has two important advantages. Wasp is able to distinguish between a definite error, a possible error (warning), and a potentially erroneous situation.
In the latter case, Wasp produces a message called conditional error that in practice appear to indicate an errorin approximately one case from five.
Wasp performs context-sensitive data flow analysis, so it is able to recognize an error that appears only for some calls of the method containing it, but does not for other ones.
Thus, Wasp handles situations of high complexity. All known to us static analysers (e. g. QStudio Java, MetaMata Audit, etc) that statically detect run-time errors may produceonly long lists of warnings because they can not recognize definite errors in a program due to weak analyses applied.
A user has to waste much time to analyse all warnings. Wasp has proven its ability to find subtle bugs in programs evenafter debugging and testing stages of development because Waspdetects situations of real complexity.