February 19th, 2025

MSVC C++ Code Analysis: Updates in Visual Studio 2022 version 17.13

Carson Radtke
Software Engineer

The C++ team is excited to announce the latest improvements to Code Analysis in Visual Studio. Continuing our commitment to make C++ development safer and more reliable, this update focuses on reducing false positives and enhancing the analysis engine’s precision. These improvements are driven by internal teams’ and your valuable feedback through Visual Studio Developer Community

Key Improvements

Following recommendations from MORSE, we focused on enhancing selected security warnings that detect high-impact vulnerabilities. Our goal was to keep the false positive rate below 10% when running these checks against large codebases, ensuring broad adoption across Microsoft teams. This first wave of improvements targets three crucial warnings: C26100, C26831, and C33001.

Concurrency and Locking

C26100, one of our critical security warnings, detects potential race conditions that could lead to memory corruption or deadlocks. Through improved analysis of synchronization patterns, we have enhanced this warning to more accurately identify high-risk concurrency issues. Here is a summary of the key improvements in this area:

  • New diagnostics (C26132 + C26133) for detecting lock hierarchy mismatches in custom locking functions
  • Better analysis of lock acquisition patterns
  • Improved status tracking for concurrency checking

Enhanced Overflow Detection for Allocations

C26831, another critical security warning, detects potential numerical overflows in values used for memory allocation that could lead to buffer overruns and other memory corruption vulnerabilities. Through improved analysis of allocation patterns and sign conversions, we have enhanced this warning to more accurately identify high-risk overflow scenarios. Here is a summary of the key improvements in this area:

  • New diagnostics (C26838 + C26839) for detecting potential allocation overflow issues due to signed-to-unsigned conversions
  • Added heuristics for validating postcondition overflow checks in allocation routines

VariantClear and VARIANT Initialization

C33001, our third critical security warning, detects uninitialized VARIANT objects that could lead to memory corruption when passed to cleanup functions. Through improved tracking of VARIANT initialization states, we have enhanced this warning to accurately identify high-risk COM interface usage while maintaining a low false positive rate in production Windows code.

Community Feedback

Your feedback drives our prioritization and helps us deliver a better product. We actively monitor the Developer Community and use upvotes to understand which issues impact the most users. Even if you encounter an issue that is already reported, please upvote it – this helps us better prioritize our fixes.

Here are some key issues we have addressed based on community feedback:

We encourage you to continue reporting and upvoting issues you encounter. Whether it is a false positive, unclear diagnostic message, or feature request, your input is essential in shaping the future of C++ Code Analysis.

Looking Forward

Security remains a top priority as we work closely with MORSE and internal teams to enhance critical security warnings for high-impact vulnerabilities. We remain committed to lowering false positive rates across all our checkers.

Your feedback through the Developer Community continues to be essential in shaping our roadmap. As we expand our coverage of modern C++ security best practices, we will keep focusing on addressing community-reported issues to ensure our warnings remain precise and actionable.

Try It Out

These improvements are now available in Visual Studio 2022 version 17.13. To get started, check out the Code Analysis documentation. Our work is heavily influenced by your feedback; please continue to engage with us through the Developer Community and in the comments section below.

Stay tuned for more C++ static analysis improvements. Your feedback helps us make C++ development safer and more productive for everyone.

Author

Carson Radtke
Software Engineer

C++ Static Analysis Team | Microsoft/GSL Maintainer

0 comments