brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · aff8b45 Raw
109 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 "../readability/BracesAroundStatementsCheck.h"13#include "../readability/FunctionSizeCheck.h"14#include "../readability/NamespaceCommentCheck.h"15#include "AvoidCStyleCastsCheck.h"16#include "AvoidNSObjectNewCheck.h"17#include "AvoidThrowingObjCExceptionCheck.h"18#include "AvoidUnderscoreInGoogletestNameCheck.h"19#include "DefaultArgumentsCheck.h"20#include "ExplicitConstructorCheck.h"21#include "ExplicitMakePairCheck.h"22#include "FloatTypesCheck.h"23#include "FunctionNamingCheck.h"24#include "GlobalNamesInHeadersCheck.h"25#include "GlobalVariableDeclarationCheck.h"26#include "IntegerTypesCheck.h"27#include "OverloadedUnaryAndCheck.h"28#include "TodoCommentCheck.h"29#include "UnnamedNamespaceInHeaderCheck.h"30#include "UpgradeGoogletestCaseCheck.h"31#include "UsingNamespaceDirectiveCheck.h"32 33using namespace clang::ast_matchers;34 35namespace clang::tidy {36namespace google {37 38class GoogleModule : public ClangTidyModule {39public:40  void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {41    CheckFactories.registerCheck<build::ExplicitMakePairCheck>(42        "google-build-explicit-make-pair");43    CheckFactories.registerCheck<build::UnnamedNamespaceInHeaderCheck>(44        "google-build-namespaces");45    CheckFactories.registerCheck<build::UsingNamespaceDirectiveCheck>(46        "google-build-using-namespace");47    CheckFactories.registerCheck<DefaultArgumentsCheck>(48        "google-default-arguments");49    CheckFactories.registerCheck<ExplicitConstructorCheck>(50        "google-explicit-constructor");51    CheckFactories.registerCheck<readability::GlobalNamesInHeadersCheck>(52        "google-global-names-in-headers");53    CheckFactories.registerCheck<objc::AvoidNSObjectNewCheck>(54        "google-objc-avoid-nsobject-new");55    CheckFactories.registerCheck<objc::AvoidThrowingObjCExceptionCheck>(56        "google-objc-avoid-throwing-exception");57    CheckFactories.registerCheck<objc::FunctionNamingCheck>(58        "google-objc-function-naming");59    CheckFactories.registerCheck<objc::GlobalVariableDeclarationCheck>(60        "google-objc-global-variable-declaration");61    CheckFactories.registerCheck<runtime::RuntimeFloatCheck>(62        "google-runtime-float");63    CheckFactories.registerCheck<runtime::IntegerTypesCheck>(64        "google-runtime-int");65    CheckFactories.registerCheck<runtime::OverloadedUnaryAndCheck>(66        "google-runtime-operator");67    CheckFactories68        .registerCheck<readability::AvoidUnderscoreInGoogletestNameCheck>(69            "google-readability-avoid-underscore-in-googletest-name");70    CheckFactories.registerCheck<readability::AvoidCStyleCastsCheck>(71        "google-readability-casting");72    CheckFactories.registerCheck<readability::TodoCommentCheck>(73        "google-readability-todo");74    CheckFactories75        .registerCheck<clang::tidy::readability::BracesAroundStatementsCheck>(76            "google-readability-braces-around-statements");77    CheckFactories.registerCheck<clang::tidy::readability::FunctionSizeCheck>(78        "google-readability-function-size");79    CheckFactories80        .registerCheck<clang::tidy::readability::NamespaceCommentCheck>(81            "google-readability-namespace-comments");82    CheckFactories.registerCheck<UpgradeGoogletestCaseCheck>(83        "google-upgrade-googletest-case");84  }85 86  ClangTidyOptions getModuleOptions() override {87    ClangTidyOptions Options;88    auto &Opts = Options.CheckOptions;89    Opts["google-readability-braces-around-statements.ShortStatementLines"] =90        "1";91    Opts["google-readability-function-size.StatementThreshold"] = "800";92    Opts["google-readability-namespace-comments.ShortNamespaceLines"] = "10";93    Opts["google-readability-namespace-comments.SpacesBeforeComments"] = "2";94    return Options;95  }96};97 98// Register the GoogleTidyModule using this statically initialized variable.99static ClangTidyModuleRegistry::Add<GoogleModule> X("google-module",100                                                    "Adds Google lint checks.");101 102} // namespace google103 104// This anchor is used to force the linker to link in the generated object file105// and thus register the GoogleModule.106volatile int GoogleModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)107 108} // namespace clang::tidy109