Programmers make an incredibly large number of misprints, simple logical slip-ups and Copy-Paste caused mistakes. I invite you to taste them. Bon appétit!
Programmers tend to believe that it's very complicated and tricky bugs they spend most of their time on, while they never make simple mistakes.
That's wrong, of course: they do, and these mistakes in total take much time and effort to fix. It's just that simple errors don't stick in your memory. You are more likely to remember an epic battle against a race condition that raged for a whole day. So, that's right: complicated errors may take much time to eliminate; but the point is that simple bugs in total may cause as much harm. This idea is discussed in detail in the article The second myth - expert developers do not make silly mistakes .
While checking various open-source projects with PVS-Studio, I add new bugs into our bug database. This time I've picked out those diagnostics that help to detect the following sorts of bugs: slip-ups, misprints and bugs caused by incorrectly used Copy-Paste. Behold and beware.
These are just a few of the silly mistakes programmers tend to make, yet these are the most representative ones. Enjoy your reading. The complete list of samples can be found here.
Many readers liked my article "Consequences of using the Copy-Paste method in C++ programming and how to deal with it" . Scott Meyers  noticed it too and asked me how static analysis proper helped us to detect the errors described in the article. This is his letter: