> When reviewers look for these logic issues, they often run through the code line-by-line using different inputs and see if any lines cause the code to produce the wrong output.<p>I don't know of anyone that regularly does this during code reviews.<p>In my experience, automated tests help to catch regressions, i.e., they help catch error cases that people have already anticipated. If the system fails in some brand new unexpected way, you won't have tests for it by definition.<p>Similarly, static analysis can help catch certain classes of bugs, but there's plenty of things they won't be able to spot.<p>Yes, they're both useful, but neither of these is a replacement for code review. They're all complementary.