Summary
Jason presents a simplified three-step approach to safer C++ development. He starts with a prerequisite (step 0) of having a continuous integration/test environment, then outlines three critical steps: 1) adding basic static analysis with warnings as errors, building in both Release and Debug modes, and configuring clang-tidy with appropriate checks; 2) enabling sanitizers (address, undefined behavior, and thread) during testing or using Valgrind/Dr. Memory as fallbacks; and 3) implementing fuzzing for all user-facing APIs to catch unexpected issues. This approach provides an accessible path to significantly improve C++ code safety.