Basic block
Decision node
Entry
⚠ Couldn't load the 3D engineThree.js failed to load from the CDN. Check your connection and reload.
Every static-analysis linter — ESLint, SonarQube, Android Lint, Detekt — flags functions once their control-flow graph gets too tangled, and the number they check is McCabe's Cyclomatic Complexity: M = E − N + 2, the count of edges minus nodes in the function's graph plus two. This simulator lets you build that graph construct by construct — straight-line statements, IF/ELSE branches, LOOPs with back-edges, and multi-way SWITCH statements — and renders it live as a 3D control-flow graph while every metric a linter would report (node count, edge count, decision points, minimum test paths, and M itself) updates in real time against a configurable lint threshold, exactly the rule a CI pipeline runs on every commit.