clang-tools 20.0.0git
UseStdPrintCheck.h
Go to the documentation of this file.
1//===--- UseStdPrintCheck.h - clang-tidy-------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_USESTDPRINTCHECK_H
10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_USESTDPRINTCHECK_H
11
12#include "../ClangTidyCheck.h"
13#include "../utils/IncludeInserter.h"
14
15namespace clang::tidy::modernize {
16/// Convert calls to printf-like functions to std::print and std::println
17///
18/// For the user-facing documentation see:
19/// http://clang.llvm.org/extra/clang-tidy/checks/modernize/use-std-print.html
21public:
22 UseStdPrintCheck(StringRef Name, ClangTidyContext *Context);
23 bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
24 if (ReplacementPrintFunction == "std::print" ||
25 ReplacementPrintlnFunction == "std::println")
26 return LangOpts.CPlusPlus23;
27 return LangOpts.CPlusPlus;
28 }
29 void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP,
30 Preprocessor *ModuleExpanderPP) override;
31 void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
32 void registerMatchers(ast_matchers::MatchFinder *Finder) override;
33 void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
34 std::optional<TraversalKind> getCheckTraversalKind() const override {
35 return TK_IgnoreUnlessSpelledInSource;
36 }
37
38private:
39 bool StrictMode;
40 std::vector<StringRef> PrintfLikeFunctions;
41 std::vector<StringRef> FprintfLikeFunctions;
42 StringRef ReplacementPrintFunction;
43 StringRef ReplacementPrintlnFunction;
44 utils::IncludeInserter IncludeInserter;
45 std::optional<StringRef> MaybeHeaderToInclude;
46};
47
48} // namespace clang::tidy::modernize
49
50#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_USESTDPRINTCHECK_H
llvm::SmallString< 256U > Name
Base class for all clang-tidy checks.
Every ClangTidyCheck reports errors through a DiagnosticsEngine provided by this context.
Convert calls to printf-like functions to std::print and std::println.
void registerMatchers(ast_matchers::MatchFinder *Finder) override
Override this to register AST matchers with Finder.
void storeOptions(ClangTidyOptions::OptionMap &Opts) override
Should store all options supported by this check with their current values or default values for opti...
std::optional< TraversalKind > getCheckTraversalKind() const override
void check(const ast_matchers::MatchFinder::MatchResult &Result) override
ClangTidyChecks that register ASTMatchers should do the actual work in here.
void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP, Preprocessor *ModuleExpanderPP) override
Override this to register PPCallbacks in the preprocessor.
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override
Override this to disable registering matchers and PP callbacks if an invalid language version is bein...
Produces fixes to insert specified includes to source files, if not yet present.
llvm::StringMap< ClangTidyValue > OptionMap