| //===- SourceCoverageViewHTML.h - A html code coverage view ---------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// | |
| /// \file This file defines the interface to the html coverage renderer. | |
| /// | |
| //===----------------------------------------------------------------------===// | |
| #ifndef LLVM_COV_SOURCECOVERAGEVIEWHTML_H | |
| #define LLVM_COV_SOURCECOVERAGEVIEWHTML_H | |
| #include "SourceCoverageView.h" | |
| namespace llvm { | |
| using namespace coverage; | |
| struct FileCoverageSummary; | |
| /// A coverage printer for html output. | |
| class CoveragePrinterHTML : public CoveragePrinter { | |
| public: | |
| Expected<OwnedStream> createViewFile(StringRef Path, | |
| bool InToplevel) override; | |
| void closeViewFile(OwnedStream OS) override; | |
| Error createIndexFile(ArrayRef<std::string> SourceFiles, | |
| const coverage::CoverageMapping &Coverage, | |
| const CoverageFiltersMatchAll &Filters) override; | |
| CoveragePrinterHTML(const CoverageViewOptions &Opts) | |
| : CoveragePrinter(Opts) {} | |
| private: | |
| void emitFileSummary(raw_ostream &OS, StringRef SF, | |
| const FileCoverageSummary &FCS, | |
| bool IsTotals = false) const; | |
| std::string buildLinkToFile(StringRef SF, | |
| const FileCoverageSummary &FCS) const; | |
| }; | |
| /// A code coverage view which supports html-based rendering. | |
| class SourceCoverageViewHTML : public SourceCoverageView { | |
| void renderViewHeader(raw_ostream &OS) override; | |
| void renderViewFooter(raw_ostream &OS) override; | |
| void renderSourceName(raw_ostream &OS, bool WholeFile) override; | |
| void renderLinePrefix(raw_ostream &OS, unsigned ViewDepth) override; | |
| void renderLineSuffix(raw_ostream &OS, unsigned ViewDepth) override; | |
| void renderViewDivider(raw_ostream &OS, unsigned ViewDepth) override; | |
| void renderLine(raw_ostream &OS, LineRef L, const LineCoverageStats &LCS, | |
| unsigned ExpansionCol, unsigned ViewDepth) override; | |
| void renderExpansionSite(raw_ostream &OS, LineRef L, | |
| const LineCoverageStats &LCS, unsigned ExpansionCol, | |
| unsigned ViewDepth) override; | |
| void renderExpansionView(raw_ostream &OS, ExpansionView &ESV, | |
| unsigned ViewDepth) override; | |
| void renderInstantiationView(raw_ostream &OS, InstantiationView &ISV, | |
| unsigned ViewDepth) override; | |
| void renderLineCoverageColumn(raw_ostream &OS, | |
| const LineCoverageStats &Line) override; | |
| void renderLineNumberColumn(raw_ostream &OS, unsigned LineNo) override; | |
| void renderRegionMarkers(raw_ostream &OS, const LineCoverageStats &Line, | |
| unsigned ViewDepth) override; | |
| void renderTitle(raw_ostream &OS, StringRef Title) override; | |
| void renderTableHeader(raw_ostream &OS, unsigned FirstUncoveredLineNo, | |
| unsigned IndentLevel) override; | |
| public: | |
| SourceCoverageViewHTML(StringRef SourceName, const MemoryBuffer &File, | |
| const CoverageViewOptions &Options, | |
| coverage::CoverageData &&CoverageInfo) | |
| : SourceCoverageView(SourceName, File, Options, std::move(CoverageInfo)) { | |
| } | |
| }; | |
| } // namespace llvm | |
| #endif // LLVM_COV_SOURCECOVERAGEVIEWHTML_H |