Analyzers
Analyzer reference
SimplicityTools ships seven Roslyn diagnostics. Two of them fix code for you, all of them exist to teach a simpler shape, and each one maps back to one of the Simplicity-First filters.
SF0001–SF0007
Browse individual diagnostics for firing conditions, examples, code-fix details, and source links.
Interface has single implementation
Flags interfaces that introduce indirection without delivering polymorphism because the solution only has one concrete implementation.
SF0002Package reference has no symbol usage
Flags PackageReference entries that contribute no detected symbol usage in C# source so dependency cost does not accumulate silently.
SF0003Method is too complex for fast understanding
Flags ordinary methods whose cyclomatic complexity exceeds 10 so teams do not normalize “hard to reason about” as a routine cost.
SF0004Method call chain is too deep
Flags source methods that route through more than eight abstraction layers because the primary path has been buried under wrappers.
SF0005Constructor takes too many parameters
Flags classes with constructors above seven parameters because large parameter lists usually mean the type owns too much work.
SF0006Generic parameter has only one specialization
Flags generic types or methods whose type parameter is only ever bound to one concrete type in source, signaling abstraction without flexibility.
SF0007Supporting file is referenced more than the primary path
Flags supporting files whose inbound reference count exceeds the most referenced primary-path file, signaling that the scaffolding has become easier to see than the real flow.
Install and operational guides
The diagnostic pages explain the rule. The integration guides explain how to make the rules show up in the places teams already work.
IDE setup
Visual Studio, Rider, and VS Code guidance for getting diagnostics and code fixes to light up reliably.
CICI/CD integration
Use analyzers and CLI checks together so the same simplification contract shows up in pull requests.
MSBuildcsproj reference
Correct PackageReference shape, PrivateAssets guidance, and primary-path annotation best practices.