softperson

Automating creativity

NStatic

Preannouncement for a revived code analyzer

NStatic finds bugs by reasoning about what your C# code means.

Not another style checker. NStatic is a symbolic analyzer for .NET code that models state, calls, paths, assertions, and exceptions so warnings can explain how a problem is reached.

See the featuresSee how it works
NStatic source highlighting with arrows showing execution flow

Friendlier

A debugger-like experience for static analysis: error list, symbolic locals, assumptions, call stack, and visual execution paths.

Smarter

Deep semantic analysis built on symbolic expressions, method summaries, constraints, and algebraic simplification.

Faster

A deterministic expression engine that caches, simplifies, and summarizes rather than blindly exploring every path forever.

Why NStatic

Most analyzers stop at "this line might fail." NStatic was designed to answer the more useful question: under what symbolic conditions does this line fail, and what did the program know at that point?

Show the route to the warning.

Execution paths are represented internally and rendered back onto source so ignored, active, and assumed branches can be distinguished.

Explain values symbolically.

Locals and fields can be shown in terms of parameters, pre-state, conditionals, and function summaries.

Use facts across calls.

Interprocedural analysis lets errors flow through methods, properties, constructors, framework calls, and user-defined abstractions.

Core approach

NStatic lowers C# into a symbolic representation where values, branches, state changes, lambdas, assertions, and calls can be evaluated together.

01

Parse C#

Read source and recover declarations, expressions, statements, scopes, and type information.

02

Build semantics

Translate methods into symbolic state, result, and type summaries.

03

Simplify

Normalize arithmetic, conditionals, lambdas, state reads, and method facts.

04

Check assertions

Find possible exceptions, failed asserts, redundant branches, and unreachable paths.

05

Explain

Report the call stack, path assumptions, symbolic locals, and the source route to the issue.

Product preview

The original UI explored a simple idea: when analysis finds a problem, let the developer inspect the symbolic runtime that led to it.

Symbolic call stacks

Inspect how a warning crosses method boundaries without forcing every caller to be annotated manually.

NStatic call stack window showing interprocedural analysis
Specification comments

Add analysis-only assertions, assumptions, and breakpoints while keeping ordinary C# compilation intact.

NStatic specification syntax highlighted inside C# comments

NStatic is being revived from an incomplete but serious prototype.

The first goal is not hype. It is to recover the engine, document the design, prove small examples end to end, and prepare a credible preview for developers who care about semantic code analysis.