My go to for formatting would be clang-format, and for testing gtest. For more extensive formatting (that involves the compiler) clang-tidy goes a long way
Clang tidy does both: it can run clang's analyzer [0] (also available with clang++ --analyze or the scan-build wrapper script which provides nicer HTML-based output for complex problems found), has it's own lightweight code analysis checks but also has checks that are more about formatting and ensuring idiomatic code than it is about typical static analysis.
MVSC [1] and GCC [2] also have built-in static analyzers available via cl /analyze or g++ -fanalyzer these days.
There is also cppcheck [3], include-what-you-use [4] and a whole bunch more.
Maybe just semantics, but I think I would call that prediction. Even if you have perfect perception (measuring the current state of the world perfectly), it's nontrivial to predict the future paths of other actors. The prediction problem requires intuition about what the other actors are thinking, how their plans influence each other, and how your plan influences them.
Waymo is also in competition with non AV ride sharing companies. They'll need to make it more cost effective and/or (continue to) deliver higher quality rides
`git bisect run ...`
Has been really nice for me when trying to find which which commit broke long running commands. It'll run atomically using the return code for good/bad determination.