clang-tools 23.0.0git
HICPPTidyModule.cpp
Go to the documentation of this file.
1//===----------------------------------------------------------------------===//
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#include "../ClangTidy.h"
10#include "../ClangTidyModule.h"
42
43namespace clang::tidy {
44namespace hicpp {
45namespace {
46
47class HICPPModule : public ClangTidyModule {
48public:
49 void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
51 "hicpp-avoid-c-arrays");
53 "hicpp-avoid-goto");
55 "hicpp-braces-around-statements");
57 "hicpp-deprecated-headers");
59 "hicpp-exception-baseclass");
61 "hicpp-ignored-remove-result");
63 "hicpp-multiway-paths-covered");
65 "hicpp-signed-bitwise");
67 "hicpp-explicit-conversions");
69 "hicpp-function-size");
71 "hicpp-named-parameter");
73 "hicpp-invalid-access-moved");
75 "hicpp-member-init");
77 "hicpp-move-const-arg");
79 "hicpp-new-delete-operators");
81 "hicpp-noexcept-move");
82 CheckFactories
84 "hicpp-no-array-decay");
86 "hicpp-no-assembler");
88 "hicpp-no-malloc");
89 CheckFactories
91 "hicpp-special-member-functions");
93 "hicpp-static-assert");
94 CheckFactories.registerCheck<modernize::UseAutoCheck>("hicpp-use-auto");
96 "hicpp-undelegated-constructor");
98 "hicpp-use-emplace");
100 "hicpp-use-equals-default");
102 "hicpp-use-equals-delete");
104 "hicpp-use-noexcept");
106 "hicpp-use-nullptr");
108 "hicpp-use-override");
110 "hicpp-uppercase-literal-suffix");
112 "hicpp-vararg");
113 }
114
115 ClangTidyOptions getModuleOptions() override {
116 ClangTidyOptions Options;
118 Opts["hicpp-ignored-remove-result.CheckedFunctions"] =
119 "^::std::remove$;^::std::remove_if$;^::std::unique$";
120 Opts["hicpp-ignored-remove-result.CheckedReturnTypes"] = "";
121 Opts["hicpp-ignored-remove-result.AllowCastToVoid"] = "true";
122 return Options;
123 }
124};
125
126} // namespace
127
128// Register the HICPPModule using this statically initialized variable.
129static ClangTidyModuleRegistry::Add<HICPPModule>
130 X("hicpp-module", "Adds High-Integrity C++ checks.");
131
132} // namespace hicpp
133
134// This anchor is used to force the linker to link in the generated object file
135// and thus register the HICPPModule.
136volatile int HICPPModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
137
138} // namespace clang::tidy
A collection of ClangTidyCheckFactory instances.
void registerCheck(StringRef CheckName)
Registers the CheckType with the name Name.
A clang-tidy module groups a number of ClangTidyChecks and gives them a prefixed name.
This check implements the rule 5.6.1 of the HICPP Standard, which disallows bitwise operations on sig...
Check for thrown exceptions and enforce they are all derived from std::exception.
Finds creation of temporary objects in constructors that look like a function call to another constru...
Detects function calls where the return value is unused.
The check warns if an object is used after it has been moved, without an intervening reinitialization...
The usage of goto for control flow is error prone and should be replaced with looping constructs.
This checker is concerned with C-style memory management and suggest modern alternatives to it.
This check flags all calls to c-style variadic functions and all use of va_arg.
Checks for classes where some, but not all, of the special member functions are defined.
Checks that all single-argument constructors are explicit.
Find occasions where not all codepaths are explicitly covered in code.
Replaces assert() with static_assert() if the condition is evaluatable at compile time.
Find C-style array types and recommend to use std::array<> / std::vector<>.
This check replaces deprecated C library headers with their C++ STL alternatives.
This check looks for cases when inserting new element into std::vector but the element is constructed...
Replace default bodies of special member functions with '= default;'.
Identifies unimplemented private special member functions, and recommends using = delete for them.
Replace dynamic exception specifications, with noexcept (or user-defined macro) or noexcept(false).
Use C++11's override and remove virtual where applicable.
Find casts of calculation results to bigger type.
The check flags user-defined move constructors and assignment operators not marked with noexcept or m...
Checks that bodies of if statements and loops (for, range-for, do-while, and while) are inside braces...
Checks for large functions based on various metrics.
Find functions with unnamed arguments.
Detects when the integral literal or floating point literal has non-uppercase suffix,...
static ClangTidyModuleRegistry::Add< HICPPModule > X("hicpp-module", "Adds High-Integrity C++ checks.")
volatile int HICPPModuleAnchorSource
Contains options for clang-tidy.
OptionMap CheckOptions
Key-value mapping used to store check-specific options.
llvm::StringMap< ClangTidyValue > OptionMap