123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #pragma once
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #endif
- //===--- AnalysisConsumer.h - Front-end Analysis Engine Hooks ---*- 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
- //
- //===----------------------------------------------------------------------===//
- //
- // This header contains the functions necessary for a front-end to run various
- // analyses.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CLANG_STATICANALYZER_FRONTEND_ANALYSISCONSUMER_H
- #define LLVM_CLANG_STATICANALYZER_FRONTEND_ANALYSISCONSUMER_H
- #include "clang/AST/ASTConsumer.h"
- #include "clang/Basic/LLVM.h"
- #include <functional>
- #include <memory>
- namespace clang {
- class CompilerInstance;
- namespace ento {
- class PathDiagnosticConsumer;
- class CheckerRegistry;
- class AnalysisASTConsumer : public ASTConsumer {
- public:
- virtual void AddDiagnosticConsumer(PathDiagnosticConsumer *Consumer) = 0;
- /// This method allows registering statically linked custom checkers that are
- /// not a part of the Clang tree. It employs the same mechanism that is used
- /// by plugins.
- ///
- /// Example:
- ///
- /// Consumer->AddCheckerRegistrationFn([] (CheckerRegistry& Registry) {
- /// Registry.addChecker<MyCustomChecker>("example.MyCustomChecker",
- /// "Description");
- /// });
- virtual void
- AddCheckerRegistrationFn(std::function<void(CheckerRegistry &)> Fn) = 0;
- };
- /// CreateAnalysisConsumer - Creates an ASTConsumer to run various code
- /// analysis passes. (The set of analyses run is controlled by command-line
- /// options.)
- std::unique_ptr<AnalysisASTConsumer>
- CreateAnalysisConsumer(CompilerInstance &CI);
- } // namespace ento
- } // end clang namespace
- #endif
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
|