//===-- clang-tools-extra/clang-tidy/NoLintDirectiveHandler.h ----*- 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_NOLINTDIRECTIVEHANDLER_H #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_NOLINTDIRECTIVEHANDLER_H #include "clang/Basic/Diagnostic.h" #include "llvm/ADT/StringRef.h" #include namespace clang::tooling { struct Diagnostic; } // namespace clang::tooling namespace llvm { template class SmallVectorImpl; } // namespace llvm namespace clang::tidy { /// This class is used to locate NOLINT comments in the file being analyzed, to /// decide whether a diagnostic should be suppressed. /// This class keeps a cache of every NOLINT comment found so that files do not /// have to be repeatedly parsed each time a new diagnostic is raised. class NoLintDirectiveHandler { public: NoLintDirectiveHandler(); ~NoLintDirectiveHandler(); bool shouldSuppress(DiagnosticsEngine::Level DiagLevel, const Diagnostic &Diag, llvm::StringRef DiagName, llvm::SmallVectorImpl &NoLintErrors, bool AllowIO, bool EnableNoLintBlocks); private: class Impl; std::unique_ptr PImpl; }; } // namespace clang::tidy #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_NOLINTDIRECTIVEHANDLER_H