brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 8424f5e Raw
71 lines · c
1//===--- TidyProvider.h - create options for running 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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_TIDYPROVIDER_H10#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_TIDYPROVIDER_H11 12#include "../clang-tidy/ClangTidyOptions.h"13#include "support/ThreadsafeFS.h"14#include "llvm/ADT/FunctionExtras.h"15#include "llvm/ADT/StringRef.h"16 17namespace clang {18namespace clangd {19 20/// A factory to modify a \ref tidy::ClangTidyOptions.21using TidyProvider =22    llvm::unique_function<void(tidy::ClangTidyOptions &,23                               /*Filename=*/llvm::StringRef) const>;24 25/// A factory to modify a \ref tidy::ClangTidyOptions that doesn't hold any26/// state.27using TidyProviderRef = llvm::function_ref<void(tidy::ClangTidyOptions &,28                                                /*Filename=*/llvm::StringRef)>;29 30TidyProvider combine(std::vector<TidyProvider> Providers);31 32/// Provider that just sets the defaults.33TidyProvider provideEnvironment();34 35/// Provider that will enable a nice set of default checks if none are36/// specified.37TidyProvider provideDefaultChecks();38 39/// Provider the enables a specific set of checks and warnings as errors.40TidyProvider addTidyChecks(llvm::StringRef Checks,41                           llvm::StringRef WarningsAsErrors = {});42 43/// Provider that will disable checks known to not work with clangd. \p44/// ExtraBadChecks specifies any other checks that should be always45/// disabled.46TidyProvider47disableUnusableChecks(llvm::ArrayRef<std::string> ExtraBadChecks = {});48 49/// Provider that searches for .clang-tidy configuration files in the directory50/// tree.51TidyProvider provideClangTidyFiles(ThreadsafeFS &);52 53// Provider that uses clangd configuration files.54TidyProvider provideClangdConfig();55 56tidy::ClangTidyOptions getTidyOptionsForFile(TidyProviderRef Provider,57                                             llvm::StringRef Filename);58 59/// Returns if \p Check is a registered clang-tidy check60/// \pre \p must not be empty, must not contain '*' or ',' or start with '-'.61bool isRegisteredTidyCheck(llvm::StringRef Check);62 63/// Returns if \p Check is known-fast, known-slow, or its speed is unknown.64/// By default, only fast checks will run in clangd.65std::optional<bool> isFastTidyCheck(llvm::StringRef Check);66 67} // namespace clangd68} // namespace clang69 70#endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_TIDYPROVIDER_H71