What it is:
Infer# brings the Infer static analysis platform to developers who use Microsoft’s C# programming language. It can already detect null-pointer dereference and resource leak bugs, thanks to bi-abduction analysis. Detection of race conditions based on RacerD analysis is also in the works. Infer# has been used to analyze Microsoft software, including Roslyn, DotNET SDK, ASP.NET Core, and MSBuild.
Infer# was first presented at the Infer Practitioners workshop, colocated with PLDI 2020.
What it does:
It provides a new language front end for C# in Infer. A new Infer front end is no small feat: It’s essentially a compiler from the source language (in this case, the .NET bytecode for C#) to Infer’s own intermediate language, called SIL. Infer analyses can then be reused for the new language with minimal adaptation, as they analyze SIL and not the source language itself.
It also introduces a new language-independent JSON layer to represent SIL, opening the door to more Infer front ends for other programming languages in the future.
Why it matters:
While there are several open source static analyzers for C# to choose from, they typically are not able to find the deep inter-procedural bugs, such as null dereferences, data races, or resource leaks, that Infer is able to find in languages like Java or C++. Infer# brings scalable, automated, and interprocedural Infer analyses to the .NET platform.