Static code analyzers inspect programs for possible flaws, but they can miss real problems or flag code that is not actually wrong. Researchers studied 350 previously confirmed and fixed issues from PMD, SpotBugs and SonarQube to examine why these errors occur.

They then used patterns from that analysis to create new test programs by changing existing ones in ways that should preserve or predict the tools’ results. The approach found 14 additional issues: 12 missed problems and two incorrect warnings. Eleven were confirmed by developers and nine had been fixed when the researchers reported their results.