//===--- ClangTidyOptions.h - clang-tidy ------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYOPTIONS_H #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYOPTIONS_H #include "llvm/ADT/IntrusiveRefCntPtr.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/ErrorOr.h" #include "llvm/Support/MemoryBufferRef.h" #include "llvm/Support/VirtualFileSystem.h" #include <functional> #include <optional> #include <string> #include <system_error> #include <utility> #include <vector> namespace clang::tidy { /// Contains a list of line ranges in a single file. struct FileFilter { … }; /// Global options. These options are neither stored nor read from /// configuration files. struct ClangTidyGlobalOptions { … }; /// Contains options for clang-tidy. These options may be read from /// configuration files, and may be different for different translation units. struct ClangTidyOptions { … }; /// Abstract interface for retrieving various ClangTidy options. class ClangTidyOptionsProvider { … }; /// Implementation of the \c ClangTidyOptionsProvider interface, which /// returns the same options for all files. class DefaultOptionsProvider : public ClangTidyOptionsProvider { … }; class FileOptionsBaseProvider : public DefaultOptionsProvider { … }; /// Implementation of ClangTidyOptions interface, which is used for /// '-config' command-line option. class ConfigOptionsProvider : public FileOptionsBaseProvider { … }; /// Implementation of the \c ClangTidyOptionsProvider interface, which /// tries to find a configuration file in the closest parent directory of each /// source file. /// /// By default, files named ".clang-tidy" will be considered, and the /// \c clang::tidy::parseConfiguration function will be used for parsing, but a /// custom set of configuration file names and parsing functions can be /// specified using the appropriate constructor. class FileOptionsProvider : public FileOptionsBaseProvider { … }; /// Parses LineFilter from JSON and stores it to the \p Options. std::error_code parseLineFilter(llvm::StringRef LineFilter, ClangTidyGlobalOptions &Options); /// Parses configuration from JSON and returns \c ClangTidyOptions or an /// error. llvm::ErrorOr<ClangTidyOptions> parseConfiguration(llvm::MemoryBufferRef Config); DiagCallback; llvm::ErrorOr<ClangTidyOptions> parseConfigurationWithDiags(llvm::MemoryBufferRef Config, DiagCallback Handler); /// Serializes configuration to a YAML-encoded string. std::string configurationAsText(const ClangTidyOptions &Options); } // namespace clang::tidy #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYOPTIONS_H