Path: blob/main/contrib/llvm-project/llvm/tools/llvm-cov/SourceCoverageViewHTML.h
35231 views
//===- SourceCoverageViewHTML.h - A html code coverage view ---------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7///8/// \file This file defines the interface to the html coverage renderer.9///10//===----------------------------------------------------------------------===//1112#ifndef LLVM_COV_SOURCECOVERAGEVIEWHTML_H13#define LLVM_COV_SOURCECOVERAGEVIEWHTML_H1415#include "SourceCoverageView.h"1617namespace llvm {1819using namespace coverage;2021struct FileCoverageSummary;2223/// A coverage printer for html output.24class CoveragePrinterHTML : public CoveragePrinter {25public:26Expected<OwnedStream> createViewFile(StringRef Path,27bool InToplevel) override;2829void closeViewFile(OwnedStream OS) override;3031Error createIndexFile(ArrayRef<std::string> SourceFiles,32const coverage::CoverageMapping &Coverage,33const CoverageFiltersMatchAll &Filters) override;3435CoveragePrinterHTML(const CoverageViewOptions &Opts)36: CoveragePrinter(Opts) {}3738protected:39Error emitStyleSheet();40Error emitJavaScript();41void emitReportHeader(raw_ostream &OSRef, const std::string &Title);4243private:44void emitFileSummary(raw_ostream &OS, StringRef SF,45const FileCoverageSummary &FCS,46bool IsTotals = false) const;47std::string buildLinkToFile(StringRef SF,48const FileCoverageSummary &FCS) const;49};5051/// A coverage printer for html output, but generates index files in every52/// subdirectory to show a hierarchical view.53class CoveragePrinterHTMLDirectory : public CoveragePrinterHTML {54public:55using CoveragePrinterHTML::CoveragePrinterHTML;5657Error createIndexFile(ArrayRef<std::string> SourceFiles,58const coverage::CoverageMapping &Coverage,59const CoverageFiltersMatchAll &Filters) override;6061private:62struct Reporter;63};6465/// A code coverage view which supports html-based rendering.66class SourceCoverageViewHTML : public SourceCoverageView {67void renderViewHeader(raw_ostream &OS) override;6869void renderViewFooter(raw_ostream &OS) override;7071void renderSourceName(raw_ostream &OS, bool WholeFile) override;7273void renderLinePrefix(raw_ostream &OS, unsigned ViewDepth) override;7475void renderLineSuffix(raw_ostream &OS, unsigned ViewDepth) override;7677void renderViewDivider(raw_ostream &OS, unsigned ViewDepth) override;7879void renderLine(raw_ostream &OS, LineRef L, const LineCoverageStats &LCS,80unsigned ExpansionCol, unsigned ViewDepth) override;8182void renderExpansionSite(raw_ostream &OS, LineRef L,83const LineCoverageStats &LCS, unsigned ExpansionCol,84unsigned ViewDepth) override;8586void renderExpansionView(raw_ostream &OS, ExpansionView &ESV,87unsigned ViewDepth) override;8889void renderBranchView(raw_ostream &OS, BranchView &BRV,90unsigned ViewDepth) override;9192void renderMCDCView(raw_ostream &OS, MCDCView &BRV,93unsigned ViewDepth) override;9495void renderInstantiationView(raw_ostream &OS, InstantiationView &ISV,96unsigned ViewDepth) override;9798void renderLineCoverageColumn(raw_ostream &OS,99const LineCoverageStats &Line) override;100101void renderLineNumberColumn(raw_ostream &OS, unsigned LineNo) override;102103void renderRegionMarkers(raw_ostream &OS, const LineCoverageStats &Line,104unsigned ViewDepth) override;105106void renderTitle(raw_ostream &OS, StringRef Title) override;107108void renderTableHeader(raw_ostream &OS, unsigned IndentLevel) override;109110public:111SourceCoverageViewHTML(StringRef SourceName, const MemoryBuffer &File,112const CoverageViewOptions &Options,113coverage::CoverageData &&CoverageInfo)114: SourceCoverageView(SourceName, File, Options, std::move(CoverageInfo)) {115}116};117118} // namespace llvm119120#endif // LLVM_COV_SOURCECOVERAGEVIEWHTML_H121122123