Syntax analysis, data flow anaysis, path-sensitive analysis. Interprocedural and intermodule. Statistics-based warning filtering.
Errors are often caused by a combination of several factors. Our warnings contain traces, i. e. sequences of points in source code which caused the error.
Explore warning traces and fix the bugs quickly, without leaving the IDE.
One-time analysis is not enough if you want to ensure the stability of your program. Integration into the development process allows you to find new bugs as soon as they are added and reduces the cost of fixes.
You can model the behavior of functions from external libraries with summaries or simplified C# implementations.
From the obvious typos to potential references to null which has come from different method.