blob: 512f5c19532615f0e0150d027aaacf80d5f8129b [file] [log] [blame]
Olivier Deprezf4ef2d02021-04-20 13:36:24 +02001//===--- InefficientStringConcatenationCheck.h - clang-tidy-----------*- C++
2//-*-===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_PERFORMANCE_INEFFICIENTSTRINGCONCATENATION_H
11#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_PERFORMANCE_INEFFICIENTSTRINGCONCATENATION_H
12
13#include "../ClangTidyCheck.h"
14
15namespace clang {
16namespace tidy {
17namespace performance {
18
19/// This check is to warn about the performance overhead arising from
20/// concatenating strings, using the operator+, instead of operator+=.
21///
22/// For the user-facing documentation see:
23/// http://clang.llvm.org/extra/clang-tidy/checks/performance-inefficient-string-concatenation.html
24class InefficientStringConcatenationCheck : public ClangTidyCheck {
25public:
26 InefficientStringConcatenationCheck(StringRef Name,
27 ClangTidyContext *Context);
28 bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
29 return LangOpts.CPlusPlus;
30 }
31 void registerMatchers(ast_matchers::MatchFinder *Finder) override;
32 void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
33 void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
34
35private:
36 const bool StrictMode;
37};
38
39} // namespace performance
40} // namespace tidy
41} // namespace clang
42
43#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_PERFORMANCE_INEFFICIENTSTRINGCONCATENATION_H