//===--- ClangTidyDiagnosticConsumer.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_CLANGTIDYDIAGNOSTICCONSUMER_H #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYDIAGNOSTICCONSUMER_H #include "ClangTidyOptions.h" #include "ClangTidyProfiling.h" #include "FileExtensionsSet.h" #include "NoLintDirectiveHandler.h" #include "clang/Basic/Diagnostic.h" #include "clang/Tooling/Core/Diagnostic.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringSet.h" #include "llvm/Support/Regex.h" #include <optional> namespace clang { class ASTContext; class SourceManager; namespace tidy { class CachedGlobList; /// A detected error complete with information to display diagnostic and /// automatic fix. /// /// This is used as an intermediate format to transport Diagnostics without a /// dependency on a SourceManager. /// /// FIXME: Make Diagnostics flexible enough to support this directly. struct ClangTidyError : tooling::Diagnostic { … }; /// Contains displayed and ignored diagnostic counters for a ClangTidy run. struct ClangTidyStats { … }; /// Every \c ClangTidyCheck reports errors through a \c DiagnosticsEngine /// provided by this context. /// /// A \c ClangTidyCheck always has access to the active context to report /// warnings like: /// \code /// Context->Diag(Loc, "Single-argument constructors must be explicit") /// << FixItHint::CreateInsertion(Loc, "explicit "); /// \endcode class ClangTidyContext { … }; /// Gets the Fix attached to \p Diagnostic. /// If there isn't a Fix attached to the diagnostic and \p AnyFix is true, Check /// to see if exactly one note has a Fix and return it. Otherwise return /// nullptr. const llvm::StringMap<tooling::Replacements> * getFixIt(const tooling::Diagnostic &Diagnostic, bool AnyFix); /// A diagnostic consumer that turns each \c Diagnostic into a /// \c SourceManager-independent \c ClangTidyError. // FIXME: If we move away from unit-tests, this can be moved to a private // implementation file. class ClangTidyDiagnosticConsumer : public DiagnosticConsumer { … }; } // end namespace tidy } // end namespace clang #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYDIAGNOSTICCONSUMER_H