My company outsources to Vietnam. At the beginning, we had time to review all the code, and we always had feedback on it. Only after several iterations would it be ok.
We would review the code manually, and later also used tools such as Jenkins and Sonar.
However, as the number of FTEs over there increased and we switched to paying per month instead of per project, the amount of the code we would received became overwhelming (about 5-6 FTEs over there per 1 FTE here), and the focus moved to getting functionality right in time.
Later we would discover horrible things in that code when we'd have to fix some issue. Which was difficult in itself because we did not know the code at all.
Very low code quality and constant issues and delays lead us to start hiring people here and slowly phase out Vietnamese programmers. We (as the local dev team) already feel much more in control of our product.