125 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "../ClangTidy.h"10#include "../ClangTidyModule.h"11#include "../ClangTidyModuleRegistry.h"12#include "../bugprone/UndelegatedConstructorCheck.h"13#include "../bugprone/UseAfterMoveCheck.h"14#include "../cppcoreguidelines/AvoidGotoCheck.h"15#include "../cppcoreguidelines/NoMallocCheck.h"16#include "../cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.h"17#include "../cppcoreguidelines/ProTypeMemberInitCheck.h"18#include "../cppcoreguidelines/ProTypeVarargCheck.h"19#include "../cppcoreguidelines/SpecialMemberFunctionsCheck.h"20#include "../google/ExplicitConstructorCheck.h"21#include "../misc/NewDeleteOverloadsCheck.h"22#include "../misc/StaticAssertCheck.h"23#include "../modernize/AvoidCArraysCheck.h"24#include "../modernize/DeprecatedHeadersCheck.h"25#include "../modernize/UseAutoCheck.h"26#include "../modernize/UseEmplaceCheck.h"27#include "../modernize/UseEqualsDefaultCheck.h"28#include "../modernize/UseEqualsDeleteCheck.h"29#include "../modernize/UseNoexceptCheck.h"30#include "../modernize/UseNullptrCheck.h"31#include "../modernize/UseOverrideCheck.h"32#include "../performance/MoveConstArgCheck.h"33#include "../performance/NoexceptMoveConstructorCheck.h"34#include "../readability/BracesAroundStatementsCheck.h"35#include "../readability/FunctionSizeCheck.h"36#include "../readability/NamedParameterCheck.h"37#include "../readability/UppercaseLiteralSuffixCheck.h"38#include "ExceptionBaseclassCheck.h"39#include "IgnoredRemoveResultCheck.h"40#include "MultiwayPathsCoveredCheck.h"41#include "NoAssemblerCheck.h"42#include "SignedBitwiseCheck.h"43 44namespace clang::tidy {45namespace hicpp {46 47class HICPPModule : public ClangTidyModule {48public:49 void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {50 CheckFactories.registerCheck<modernize::AvoidCArraysCheck>(51 "hicpp-avoid-c-arrays");52 CheckFactories.registerCheck<cppcoreguidelines::AvoidGotoCheck>(53 "hicpp-avoid-goto");54 CheckFactories.registerCheck<readability::BracesAroundStatementsCheck>(55 "hicpp-braces-around-statements");56 CheckFactories.registerCheck<modernize::DeprecatedHeadersCheck>(57 "hicpp-deprecated-headers");58 CheckFactories.registerCheck<ExceptionBaseclassCheck>(59 "hicpp-exception-baseclass");60 CheckFactories.registerCheck<IgnoredRemoveResultCheck>(61 "hicpp-ignored-remove-result");62 CheckFactories.registerCheck<MultiwayPathsCoveredCheck>(63 "hicpp-multiway-paths-covered");64 CheckFactories.registerCheck<SignedBitwiseCheck>("hicpp-signed-bitwise");65 CheckFactories.registerCheck<google::ExplicitConstructorCheck>(66 "hicpp-explicit-conversions");67 CheckFactories.registerCheck<readability::FunctionSizeCheck>(68 "hicpp-function-size");69 CheckFactories.registerCheck<readability::NamedParameterCheck>(70 "hicpp-named-parameter");71 CheckFactories.registerCheck<bugprone::UseAfterMoveCheck>(72 "hicpp-invalid-access-moved");73 CheckFactories.registerCheck<cppcoreguidelines::ProTypeMemberInitCheck>(74 "hicpp-member-init");75 CheckFactories.registerCheck<performance::MoveConstArgCheck>(76 "hicpp-move-const-arg");77 CheckFactories.registerCheck<misc::NewDeleteOverloadsCheck>(78 "hicpp-new-delete-operators");79 CheckFactories.registerCheck<performance::NoexceptMoveConstructorCheck>(80 "hicpp-noexcept-move");81 CheckFactories82 .registerCheck<cppcoreguidelines::ProBoundsArrayToPointerDecayCheck>(83 "hicpp-no-array-decay");84 CheckFactories.registerCheck<NoAssemblerCheck>("hicpp-no-assembler");85 CheckFactories.registerCheck<cppcoreguidelines::NoMallocCheck>(86 "hicpp-no-malloc");87 CheckFactories88 .registerCheck<cppcoreguidelines::SpecialMemberFunctionsCheck>(89 "hicpp-special-member-functions");90 CheckFactories.registerCheck<misc::StaticAssertCheck>(91 "hicpp-static-assert");92 CheckFactories.registerCheck<modernize::UseAutoCheck>("hicpp-use-auto");93 CheckFactories.registerCheck<bugprone::UndelegatedConstructorCheck>(94 "hicpp-undelegated-constructor");95 CheckFactories.registerCheck<modernize::UseEmplaceCheck>(96 "hicpp-use-emplace");97 CheckFactories.registerCheck<modernize::UseEqualsDefaultCheck>(98 "hicpp-use-equals-default");99 CheckFactories.registerCheck<modernize::UseEqualsDeleteCheck>(100 "hicpp-use-equals-delete");101 CheckFactories.registerCheck<modernize::UseNoexceptCheck>(102 "hicpp-use-noexcept");103 CheckFactories.registerCheck<modernize::UseNullptrCheck>(104 "hicpp-use-nullptr");105 CheckFactories.registerCheck<modernize::UseOverrideCheck>(106 "hicpp-use-override");107 CheckFactories.registerCheck<readability::UppercaseLiteralSuffixCheck>(108 "hicpp-uppercase-literal-suffix");109 CheckFactories.registerCheck<cppcoreguidelines::ProTypeVarargCheck>(110 "hicpp-vararg");111 }112};113 114// Register the HICPPModule using this statically initialized variable.115static ClangTidyModuleRegistry::Add<HICPPModule>116 X("hicpp-module", "Adds High-Integrity C++ checks.");117 118} // namespace hicpp119 120// This anchor is used to force the linker to link in the generated object file121// and thus register the HICPPModule.122volatile int HICPPModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)123 124} // namespace clang::tidy125