Picking a vibe coding tool based on how fast it ships a working UI is only half the decision. A new study from researchers Gustavo da Mota and Kiev Gama puts Lovable, v0, and Replit through static analysis to find out what the generated code actually looks like under the hood.
The Setup
The researchers generated three independent projects per tool from a single prompt, producing nine web applications total. Each was run through SonarQube, measuring issues count, severity distribution, estimated remediation effort, cyclomatic and cognitive complexity, and code duplication.
What the Analysis Found
Lovable concentrates its issues on the lower end of the severity scale. The tradeoff: it produces a substantially higher density of code smells per KLOC. You get cleaner critical issues, but messier day-to-day maintainability.
v0 and Replit both generate more code overall, and they come with more aggressive severity profiles. Fewer low-severity noise issues, but the problems that do appear are more serious.
The Operator Takeaway
If you’re handing generated code to a client or building something you plan to maintain for more than a few months, the tool choice matters beyond first-run productivity. The study describes these as structural trade-offs, not one tool being definitively better. Your tolerance for technical debt versus critical bug risk should drive the decision.
The paper is preliminary research. Nine applications is a small sample, so treat the profiles as directional signals rather than settled benchmarks.
