48 lines · c
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#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_NOLINTDIRECTIVEHANDLER_H10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_NOLINTDIRECTIVEHANDLER_H11 12#include "clang/Basic/Diagnostic.h"13#include "llvm/ADT/StringRef.h"14#include <memory>15 16namespace clang::tooling {17struct Diagnostic;18} // namespace clang::tooling19 20namespace llvm {21template <typename T> class SmallVectorImpl;22} // namespace llvm23 24namespace clang::tidy {25 26/// This class is used to locate NOLINT comments in the file being analyzed, to27/// decide whether a diagnostic should be suppressed.28/// This class keeps a cache of every NOLINT comment found so that files do not29/// have to be repeatedly parsed each time a new diagnostic is raised.30class NoLintDirectiveHandler {31public:32 NoLintDirectiveHandler();33 ~NoLintDirectiveHandler();34 35 bool shouldSuppress(DiagnosticsEngine::Level DiagLevel,36 const Diagnostic &Diag, llvm::StringRef DiagName,37 llvm::SmallVectorImpl<tooling::Diagnostic> &NoLintErrors,38 bool AllowIO, bool EnableNoLintBlocks);39 40private:41 class Impl;42 std::unique_ptr<Impl> PImpl;43};44 45} // namespace clang::tidy46 47#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_NOLINTDIRECTIVEHANDLER_H48