12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #pragma once
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #endif
- //===--- SARIFDiagnostic.h - SARIF Diagnostic Formatting -----*- 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 is a utility class that provides support for constructing a SARIF object
- // containing diagnostics.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CLANG_FRONTEND_SARIFDIAGNOSTIC_H
- #define LLVM_CLANG_FRONTEND_SARIFDIAGNOSTIC_H
- #include "clang/Basic/Sarif.h"
- #include "clang/Frontend/DiagnosticRenderer.h"
- #include "llvm/ADT/StringRef.h"
- namespace clang {
- class SARIFDiagnostic : public DiagnosticRenderer {
- public:
- SARIFDiagnostic(raw_ostream &OS, const LangOptions &LangOpts,
- DiagnosticOptions *DiagOpts, SarifDocumentWriter *Writer);
- ~SARIFDiagnostic() = default;
- SARIFDiagnostic &operator=(const SARIFDiagnostic &&) = delete;
- SARIFDiagnostic(SARIFDiagnostic &&) = delete;
- SARIFDiagnostic &operator=(const SARIFDiagnostic &) = delete;
- SARIFDiagnostic(const SARIFDiagnostic &) = delete;
- protected:
- void emitDiagnosticMessage(FullSourceLoc Loc, PresumedLoc PLoc,
- DiagnosticsEngine::Level Level, StringRef Message,
- ArrayRef<CharSourceRange> Ranges,
- DiagOrStoredDiag D) override;
- void emitDiagnosticLoc(FullSourceLoc Loc, PresumedLoc PLoc,
- DiagnosticsEngine::Level Level,
- ArrayRef<CharSourceRange> Ranges) override;
- void emitCodeContext(FullSourceLoc Loc, DiagnosticsEngine::Level Level,
- SmallVectorImpl<CharSourceRange> &Ranges,
- ArrayRef<FixItHint> Hints) override {}
- void emitIncludeLocation(FullSourceLoc Loc, PresumedLoc PLoc) override;
- void emitImportLocation(FullSourceLoc Loc, PresumedLoc PLoc,
- StringRef ModuleName) override;
- void emitBuildingModuleLocation(FullSourceLoc Loc, PresumedLoc PLoc,
- StringRef ModuleName) override;
- private:
- // Shared between SARIFDiagnosticPrinter and this renderer.
- SarifDocumentWriter *Writer;
- SarifResult addLocationToResult(SarifResult Result, FullSourceLoc Loc,
- PresumedLoc PLoc,
- ArrayRef<CharSourceRange> Ranges,
- const Diagnostic &Diag);
- SarifRule addDiagnosticLevelToRule(SarifRule Rule,
- DiagnosticsEngine::Level Level);
- llvm::StringRef emitFilename(StringRef Filename, const SourceManager &SM);
- };
- } // end namespace clang
- #endif
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
|