We have been running VS 2012's C++ /analyze on most of our code for two years now. Because /analyze takes so long to run (up to five hours) we run it as a daily job on build machines. This means that if a developer checks in code that /analyze doesn't like it can take more than 24 hours before the developer is notified of the problem.
During this two year period I have found that one of the most common types of errors that /analyze finds in our code base is printf format string mismatches, such as this:
// warning C6273: Non-integer passed as _Param_(2) when an integer is required in call to 'printf' Actual type: 'double'
printf("The int value is %d\n", 2.0);
Detecting this type of problem can be done very quickly, without noticeably slowing down compilation, so these warnings should be detected during normal compiles. This would avoid roughly 45% of our /analyze failures. It would change the turnaround on these bugs from 24+ hours down to just seconds.
Clang and gcc detect format-string errors as part of their regular compilation -- VC++ needs to catch up.
/analyze is a great feature that finds many important bugs. However it's value is severely diminished by being so slow and noisy. Moving the warnings that are fast and 100% reliable to the regular compile would enormously increase the value of the static analysis. It would allow teams that never use /analyze to benefit from the format string checks, and it would let teams that do use /analyze reduce the number of errors that get checked in.