HICPPTidyModule.cpp 5.4 KB

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