[clang-tools-extra] [clang-tidy] Add modernize-use-std-format check (PR #90397)
Danny Mösch via cfe-commits
cfe-commits at lists.llvm.org
Sun Apr 28 13:17:20 PDT 2024
================
@@ -0,0 +1,84 @@
+.. title:: clang-tidy - modernize-use-std-format
+
+modernize-use-std-format
+========================
+
+Converts calls to ``absl::StrFormat``, or other functions via
+configuration options, to C++20's ``std::format``, or another function
+via a configuration option, modifying the format string appropriately and
+removing now-unnecessary calls to ``std::string::c_str()`` and
+``std::string::data()``.
+
+In other words, it turns lines like:
+
+.. code-block:: c++
+
+ return absl::StrFormat("The %s is %3d\n", description.c_str(), value);
+
+into:
+
+.. code-block:: c++
+
+ return std::format("The {} is {:3}", description, value);
+
+The check uses the same format-string-conversion algorithm as
+`modernize-use-std-print <../modernize/use-std-print.html>`_ and its
+shortcomings are described in the documentation for that check.
+
+Options
+-------
+
+.. option:: StrictMode
+
+ When `true`, the check will add casts when converting from variadic
+ functions and printing signed or unsigned integer types (including
+ fixed-width integer types from ``<cstdint>``, ``ptrdiff_t``, ``size_t``
+ and ``ssize_t``) as the opposite signedness to ensure that the output
+ would matches that of a simple wrapper for ``std::sprintf`` that
+ accepted a C-style variable argument list. For example, with
+ `StrictMode` enabled:
+
+ .. code-block:: c++
+
+ extern std::string strprintf(const char *format, ...);
+ int i = -42;
+ unsigned int u = 0xffffffff;
+ return strprintf("%d %u\n", i, u);
+
+ would be converted to:
----------------
SimplyDanny wrote:
```suggestion
would be converted to
```
https://github.com/llvm/llvm-project/pull/90397
More information about the cfe-commits
mailing list