clang-tools  7.0.0
PerformanceTidyModule.cpp
Go to the documentation of this file.
1 //===--- PeformanceTidyModule.cpp - clang-tidy ----------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "../ClangTidy.h"
11 #include "../ClangTidyModule.h"
12 #include "../ClangTidyModuleRegistry.h"
13 #include "FasterStringFindCheck.h"
14 #include "ForRangeCopyCheck.h"
19 #include "MoveConstArgCheck.h"
25 
26 namespace clang {
27 namespace tidy {
28 namespace performance {
29 
31 public:
32  void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
33  CheckFactories.registerCheck<FasterStringFindCheck>(
34  "performance-faster-string-find");
35  CheckFactories.registerCheck<ForRangeCopyCheck>(
36  "performance-for-range-copy");
38  "performance-implicit-conversion-in-loop");
40  "performance-inefficient-algorithm");
42  "performance-inefficient-string-concatenation");
44  "performance-inefficient-vector-operation");
45  CheckFactories.registerCheck<MoveConstArgCheck>(
46  "performance-move-const-arg");
48  "performance-move-constructor-init");
50  "performance-noexcept-move-constructor");
52  "performance-type-promotion-in-math-fn");
54  "performance-unnecessary-copy-initialization");
56  "performance-unnecessary-value-param");
57  }
58 };
59 
60 // Register the PerformanceModule using this statically initialized variable.
61 static ClangTidyModuleRegistry::Add<PerformanceModule>
62  X("performance-module", "Adds performance checks.");
63 
64 } // namespace performance
65 
66 // This anchor is used to force the linker to link in the generated object file
67 // and thus register the PerformanceModule.
69 
70 } // namespace tidy
71 } // namespace clang
The check flags user-defined move constructors and assignment operators not marked with noexcept or m...
static ClangTidyModuleRegistry::Add< PerformanceModule > X("performance-module", "Adds performance checks.")
void registerCheck(StringRef CheckName)
Registers the CheckType with the name Name.
Warns on inefficient use of STL algorithms on associative containers.
Finds possible inefficient std::vector operations (e.g.
A collection of ClangTidyCheckFactory instances.
This check is to warn about the performance overhead arising from concatenating strings, using the operator+, instead of operator+=.
volatile int PerformanceModuleAnchorSource
Optimize calls to std::string::find() and friends when the needle passed is a single character string...
Finds calls to C math library functions with implicit float to double promotions. ...
A clang-tidy module groups a number of ClangTidyChecks and gives them a prefixed name.
The check flags user-defined move constructors that have a ctor-initializer initializing a member or ...
void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override
Implement this function in order to register all CheckFactories belonging to this module...
A check that flags value parameters of expensive to copy types that can safely be converted to const ...
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
A check that detects copied loop variables and suggests using const references.
Find casts of calculation results to bigger type.