[all-commits] [llvm/llvm-project] ec89cb: [clang-tidy] Add modernize-printf-to-std-print check
Mike Crowe via All-commits
all-commits at lists.llvm.org
Mon Jun 26 02:09:39 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: ec89cb9a81529fd41fb37b8e62203a2e9f23bd54
https://github.com/llvm/llvm-project/commit/ec89cb9a81529fd41fb37b8e62203a2e9f23bd54
Author: Mike Crowe <mac at mcrowe.com>
Date: 2023-06-26 (Mon, 26 Jun 2023)
Changed paths:
M clang-tools-extra/clang-tidy/modernize/CMakeLists.txt
M clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp
A clang-tools-extra/clang-tidy/modernize/UseStdPrintCheck.cpp
A clang-tools-extra/clang-tidy/modernize/UseStdPrintCheck.h
M clang-tools-extra/clang-tidy/utils/CMakeLists.txt
A clang-tools-extra/clang-tidy/utils/FormatStringConverter.cpp
A clang-tools-extra/clang-tidy/utils/FormatStringConverter.h
M clang-tools-extra/docs/ReleaseNotes.rst
M clang-tools-extra/docs/clang-tidy/checks/list.rst
A clang-tools-extra/docs/clang-tidy/checks/modernize/use-std-print.rst
A clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/cstddef
A clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/cstdint
A clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/cstdio
A clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/inttypes.h
M clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/stdio.h
M clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/string.h
A clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-print-absl.cpp
A clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-print-custom.cpp
A clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-print-fmt.cpp
A clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-print.cpp
Log Message:
-----------
[clang-tidy] Add modernize-printf-to-std-print check
Add FormatStringConverter utility class that is capable of converting
printf-style format strings into std::print-style format strings along
with recording a set of casts to wrap the arguments as required and
removing now-unnecessary calls to std::string::c_str() and
std::string::data()
Use FormatStringConverter to implement a new clang-tidy check that is
capable of converting calls to printf, fprintf, absl::PrintF,
absl::FPrintF, or any functions configured by an option to calls to
std::print and std::println, or other functions configured by options.
In other words, the check turns:
fprintf(stderr, "The %s is %3d\n", description.c_str(), value);
into:
std::println(stderr, "The {} is {:3}", description, value);
if it can.
std::print and std::println can do almost anything that standard printf
can, but the conversion has some some limitations that are described in
the documentation. If conversion is not possible then the call remains
unchanged.
Depends on D153716
Reviewed By: PiotrZSL
Differential Revision: https://reviews.llvm.org/D149280
More information about the All-commits
mailing list