Release Notes - SonarCFamily - Version 6.15 - HTML format


  • [CPP-2596] - Fix Clang parser crash on array_allocator.hpp when BOOST_NO_CXX11_ALLOCATOR isn't defined
  • [CPP-2705] - Support PCH larger than 512MB
  • [CPP-2817] - Clang driver: Correctly interpret arguments passed through "-Xclang"
  • [CPP-2835] - Fix regression in Clang 11 in PthreadLockChecker

New Feature

  • [CPP-1847] - Rule S2068: Credentials should not be hard-coded
  • [CPP-2650] - Rule S6005: Structured binding should be used
  • [CPP-2652] - Rule S6003: Emplacement should be prefered when insertion creates a temporary with sequence containers
  • [CPP-2653] - Rule S6004: "if" and "switch" initializer should be used
  • [CPP-2654] - Rule S6007: [[nodiscard]] should be used when the return value of a function should not be ignored
  • [CPP-2657] - Rule S6015: "std::uncaught_exception" should not be used
  • [CPP-2659] - Rule S6009: "std::string_view" should be used to pass a read-only string to a function
  • [CPP-2661] - Rule S6022: "std::byte" should be used when you need byte-oriented memory access
  • [CPP-2663] - Rule S6018: Inline variables should be used to declare global variables in header files
  • [CPP-2664] - Rule S6016: "[*this]" should be used to capture the current object by copy
  • [CPP-2668] - Rule S6006: "as_const" should be used
  • [CPP-2671] - Rule S6023: "std::optional" member function "value_or" should be used
  • [CPP-2675] - Rule S5997: "scoped_lock" should be preferred over "lock_guard"
  • [CPP-2678] - Rule S6030: "try_emplace" should be used with "std::map" and "std::unordered_map"
  • [CPP-2679] - Rule S6033: "emplace" should be prefered over "insert" with "std::set" and "std::unordered_set"
  • [CPP-2680] - Rule S6013: "static_assert" with no message should be used over "static_assert" with empty or redundant message
  • [CPP-2692] - Add generation of a zip file containing all the files the users should upload for investigation of problem
  • [CPP-2702] - Rule S5999: a "scoped_lock" should not be created without arguments
  • [CPP-2703] - Rule S6011: Objects should not be created solely to be passed as arguments to functions that perform delegated object creation
  • [CPP-2708] - Rule S6031: The right template argument should be specified for std::forward
  • [CPP-2712] - Rule S6032: Unnecessary expensive copy should be avoided when using auto as a placeholder type
  • [CPP-2716] - Rule S6045: Transparent comparator should be used with associative "std::string"containers
  • [CPP-2720] - Bullseye coverage: add support for v6 reports
  • [CPP-2742] - Rule S2245: Using pseudorandom number generators (PRNGs) is security-sensitive
  • [CPP-2753] - Rule S5443: Using publicly writable directories is security-sensitive
  • [CPP-2756] - Rule S5042: Expanding archive files is security-sensitive


  • [CPP-2761] - Add a way to validate the order of secondary locations in tester


  • [CPP-449] - Print stack of include files when file not found
  • [CPP-1964] - Produce warning when header file not found
  • [CPP-2468] - Upgrade Clang frontend to version 11.0.0
  • [CPP-2616] - Warn in case of a mismatch between the plugin and build-wrapper versions
  • [CPP-2625] - Log a meaningful message when compiler probe timeout
  • [CPP-2655] - Rule S5566: Support "any_of", "all_of" and "none_of"
  • [CPP-2764] - S5018: Improve issue message
  • [CPP-2766] - S131: Use "double quotes" for the code in the message
  • [CPP-2769] - S3230: Align the message with the RSPEC: use "in-class initializer" instead of "class initializer"
  • [CPP-2772] - S5000: Use double quotes(") in the message
  • [CPP-2773] - Clang driver: Ignore user system include directories already in system include directories comparing normalized paths
  • [CPP-2774] - S1236: Use double quotes (") in the message
  • [CPP-2775] - S5825: Use a more positive message
  • [CPP-2788] - S1172: Use actionable message with double quotes (")
  • [CPP-2789] - S924: Split message for "goto" and "breaks", use double quotes, and report "goto" and "breaks" as secondary locations
  • [CPP-2790] - S5495: Use a self-contained message
  • [CPP-2813] - Log a meaningful message when C++20 is used
  • [CPP-2825] - S5415: replace isTriviallyCopyableType detection by types that doesn't have move constructor/operator


  • [CPP-2763] - S5955: Fix false-positives with lambdas
  • [CPP-2778] - S1172: Fix false positive with template specialization
  • [CPP-2783] - S954: Ignore non-standard C/CPP headers (i.e., .h, .hpp, .hxx, .hh)
  • [CPP-2793] - S3539: Ignore "static_assert" before the access modifiers.
  • [CPP-2810] - S3539: Consider non-canonical forms of access specifiers as different specifiers
  • [CPP-2820] - S1912: fix FP recommending using deprecated functions
  • [CPP-2827] - S854: is visibly triggered on a struct declaration rather than on any integer literal

Edit/Copy Release Notes

The text area below allows the project release notes to be edited and copied to another document.