Manual code reviews appear the most effective way of improving code quality. Human beings  are very good in spotting potential problems and issues, which are of course a very good indicator whether code is maintainable.
Possible drawbacks of manual code reviews are that they are subjective (depending on the reviewer) and time consuming. Moreover, deep flow analysis issues are hard to detect by human beings. If manual code reviews are backed up by automated code checkers you get a more complete picture that compensates for all drawbacks of manual code reviews.