ModernizeTidyModule.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //===--- ModernizeTidyModule.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 "AvoidBindCheck.h"
  12. #include "AvoidCArraysCheck.h"
  13. #include "ConcatNestedNamespacesCheck.h"
  14. #include "DeprecatedHeadersCheck.h"
  15. #include "DeprecatedIosBaseAliasesCheck.h"
  16. #include "LoopConvertCheck.h"
  17. #include "MacroToEnumCheck.h"
  18. #include "MakeSharedCheck.h"
  19. #include "MakeUniqueCheck.h"
  20. #include "PassByValueCheck.h"
  21. #include "RawStringLiteralCheck.h"
  22. #include "RedundantVoidArgCheck.h"
  23. #include "ReplaceAutoPtrCheck.h"
  24. #include "ReplaceDisallowCopyAndAssignMacroCheck.h"
  25. #include "ReplaceRandomShuffleCheck.h"
  26. #include "ReturnBracedInitListCheck.h"
  27. #include "ShrinkToFitCheck.h"
  28. #include "UnaryStaticAssertCheck.h"
  29. #include "UseAutoCheck.h"
  30. #include "UseBoolLiteralsCheck.h"
  31. #include "UseDefaultMemberInitCheck.h"
  32. #include "UseEmplaceCheck.h"
  33. #include "UseEqualsDefaultCheck.h"
  34. #include "UseEqualsDeleteCheck.h"
  35. #include "UseNodiscardCheck.h"
  36. #include "UseNoexceptCheck.h"
  37. #include "UseNullptrCheck.h"
  38. #include "UseOverrideCheck.h"
  39. #include "UseTrailingReturnTypeCheck.h"
  40. #include "UseTransparentFunctorsCheck.h"
  41. #include "UseUncaughtExceptionsCheck.h"
  42. #include "UseUsingCheck.h"
  43. using namespace clang::ast_matchers;
  44. namespace clang::tidy {
  45. namespace modernize {
  46. class ModernizeModule : public ClangTidyModule {
  47. public:
  48. void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
  49. CheckFactories.registerCheck<AvoidBindCheck>("modernize-avoid-bind");
  50. CheckFactories.registerCheck<AvoidCArraysCheck>("modernize-avoid-c-arrays");
  51. CheckFactories.registerCheck<ConcatNestedNamespacesCheck>(
  52. "modernize-concat-nested-namespaces");
  53. CheckFactories.registerCheck<DeprecatedHeadersCheck>(
  54. "modernize-deprecated-headers");
  55. CheckFactories.registerCheck<DeprecatedIosBaseAliasesCheck>(
  56. "modernize-deprecated-ios-base-aliases");
  57. CheckFactories.registerCheck<LoopConvertCheck>("modernize-loop-convert");
  58. CheckFactories.registerCheck<MacroToEnumCheck>("modernize-macro-to-enum");
  59. CheckFactories.registerCheck<MakeSharedCheck>("modernize-make-shared");
  60. CheckFactories.registerCheck<MakeUniqueCheck>("modernize-make-unique");
  61. CheckFactories.registerCheck<PassByValueCheck>("modernize-pass-by-value");
  62. CheckFactories.registerCheck<RawStringLiteralCheck>(
  63. "modernize-raw-string-literal");
  64. CheckFactories.registerCheck<RedundantVoidArgCheck>(
  65. "modernize-redundant-void-arg");
  66. CheckFactories.registerCheck<ReplaceAutoPtrCheck>(
  67. "modernize-replace-auto-ptr");
  68. CheckFactories.registerCheck<ReplaceDisallowCopyAndAssignMacroCheck>(
  69. "modernize-replace-disallow-copy-and-assign-macro");
  70. CheckFactories.registerCheck<ReplaceRandomShuffleCheck>(
  71. "modernize-replace-random-shuffle");
  72. CheckFactories.registerCheck<ReturnBracedInitListCheck>(
  73. "modernize-return-braced-init-list");
  74. CheckFactories.registerCheck<ShrinkToFitCheck>("modernize-shrink-to-fit");
  75. CheckFactories.registerCheck<UnaryStaticAssertCheck>(
  76. "modernize-unary-static-assert");
  77. CheckFactories.registerCheck<UseAutoCheck>("modernize-use-auto");
  78. CheckFactories.registerCheck<UseBoolLiteralsCheck>(
  79. "modernize-use-bool-literals");
  80. CheckFactories.registerCheck<UseDefaultMemberInitCheck>(
  81. "modernize-use-default-member-init");
  82. CheckFactories.registerCheck<UseEmplaceCheck>("modernize-use-emplace");
  83. CheckFactories.registerCheck<UseEqualsDefaultCheck>("modernize-use-equals-default");
  84. CheckFactories.registerCheck<UseEqualsDeleteCheck>(
  85. "modernize-use-equals-delete");
  86. CheckFactories.registerCheck<UseNodiscardCheck>(
  87. "modernize-use-nodiscard");
  88. CheckFactories.registerCheck<UseNoexceptCheck>("modernize-use-noexcept");
  89. CheckFactories.registerCheck<UseNullptrCheck>("modernize-use-nullptr");
  90. CheckFactories.registerCheck<UseOverrideCheck>("modernize-use-override");
  91. CheckFactories.registerCheck<UseTrailingReturnTypeCheck>(
  92. "modernize-use-trailing-return-type");
  93. CheckFactories.registerCheck<UseTransparentFunctorsCheck>(
  94. "modernize-use-transparent-functors");
  95. CheckFactories.registerCheck<UseUncaughtExceptionsCheck>(
  96. "modernize-use-uncaught-exceptions");
  97. CheckFactories.registerCheck<UseUsingCheck>("modernize-use-using");
  98. }
  99. ClangTidyOptions getModuleOptions() override {
  100. ClangTidyOptions Options;
  101. auto &Opts = Options.CheckOptions;
  102. // For types whose size in bytes is above this threshold, we prefer taking a
  103. // const-reference than making a copy.
  104. Opts["modernize-loop-convert.MaxCopySize"] = "16";
  105. Opts["modernize-loop-convert.MinConfidence"] = "reasonable";
  106. Opts["modernize-loop-convert.NamingStyle"] = "CamelCase";
  107. Opts["modernize-pass-by-value.IncludeStyle"] = "llvm"; // Also: "google".
  108. Opts["modernize-replace-auto-ptr.IncludeStyle"] = "llvm"; // Also: "google".
  109. // Comma-separated list of macros that behave like NULL.
  110. Opts["modernize-use-nullptr.NullMacros"] = "NULL";
  111. return Options;
  112. }
  113. };
  114. // Register the ModernizeTidyModule using this statically initialized variable.
  115. static ClangTidyModuleRegistry::Add<ModernizeModule> X("modernize-module",
  116. "Add modernize checks.");
  117. } // namespace modernize
  118. // This anchor is used to force the linker to link in the generated object file
  119. // and thus register the ModernizeModule.
  120. volatile int ModernizeModuleAnchorSource = 0;
  121. } // namespace clang::tidy