diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-12-18 20:10:56 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-12-18 20:10:56 +0000 | 
| commit | 044eb2f6afba375a914ac9d8024f8f5142bb912e (patch) | |
| tree | 1475247dc9f9fe5be155ebd4c9069c75aadf8c20 /tools/llvm-cov/CoverageExporterJson.cpp | |
| parent | eb70dddbd77e120e5d490bd8fbe7ff3f8fa81c6b (diff) | |
Notes
Diffstat (limited to 'tools/llvm-cov/CoverageExporterJson.cpp')
| -rw-r--r-- | tools/llvm-cov/CoverageExporterJson.cpp | 73 | 
1 files changed, 43 insertions, 30 deletions
diff --git a/tools/llvm-cov/CoverageExporterJson.cpp b/tools/llvm-cov/CoverageExporterJson.cpp index ef50bba21238..7b700908968d 100644 --- a/tools/llvm-cov/CoverageExporterJson.cpp +++ b/tools/llvm-cov/CoverageExporterJson.cpp @@ -57,6 +57,8 @@ using namespace llvm;  using namespace coverage;  class CoverageExporterJson { +  const CoverageViewOptions &Options; +    /// \brief Output stream to print JSON to.    raw_ostream &OS; @@ -171,12 +173,15 @@ class CoverageExporterJson {      std::vector<std::string> SourceFiles;      for (StringRef SF : Coverage.getUniqueSourceFiles())        SourceFiles.emplace_back(SF); -    auto FileReports = -        CoverageReport::prepareFileReports(Coverage, Totals, SourceFiles); +    auto FileReports = CoverageReport::prepareFileReports(Coverage, Totals, +                                                          SourceFiles, Options);      renderFiles(SourceFiles, FileReports); -    emitDictKey("functions"); -    renderFunctions(Coverage.getCoveredFunctions()); +    // Skip functions-level information for summary-only export mode. +    if (!Options.ExportSummaryOnly) { +      emitDictKey("functions"); +      renderFunctions(Coverage.getCoveredFunctions()); +    }      emitDictKey("totals");      renderSummary(Totals); @@ -252,27 +257,31 @@ class CoverageExporterJson {      emitDictStart();      emitDictElement("filename", FileCoverage.getFilename()); -    emitDictKey("segments"); -    // Start List of Segments. -    emitArrayStart(); +    // Skip segments and expansions for summary-only export mode. +    if (!Options.ExportSummaryOnly) { +      emitDictKey("segments"); -    for (const auto &Segment : FileCoverage) -      renderSegment(Segment); +      // Start List of Segments. +      emitArrayStart(); -    // End List of Segments. -    emitArrayEnd(); +      for (const auto &Segment : FileCoverage) +        renderSegment(Segment); -    emitDictKey("expansions"); +      // End List of Segments. +      emitArrayEnd(); -    // Start List of Expansions. -    emitArrayStart(); +      emitDictKey("expansions"); -    for (const auto &Expansion : FileCoverage.getExpansions()) -      renderExpansion(Expansion); +      // Start List of Expansions. +      emitArrayStart(); -    // End List of Expansions. -    emitArrayEnd(); +      for (const auto &Expansion : FileCoverage.getExpansions()) +        renderExpansion(Expansion); + +      // End List of Expansions. +      emitArrayEnd(); +    }      emitDictKey("summary");      renderSummary(FileReport); @@ -360,8 +369,8 @@ class CoverageExporterJson {      // Start Line Coverage Summary.      emitDictStart(); -    emitDictElement("count", Summary.LineCoverage.NumLines); -    emitDictElement("covered", Summary.LineCoverage.Covered); +    emitDictElement("count", Summary.LineCoverage.getNumLines()); +    emitDictElement("covered", Summary.LineCoverage.getCovered());      emitDictElement("percent", Summary.LineCoverage.getPercentCovered());      // End Line Coverage Summary.      emitDictEnd(); @@ -370,8 +379,8 @@ class CoverageExporterJson {      // Start Function Coverage Summary.      emitDictStart(); -    emitDictElement("count", Summary.FunctionCoverage.NumFunctions); -    emitDictElement("covered", Summary.FunctionCoverage.Executed); +    emitDictElement("count", Summary.FunctionCoverage.getNumFunctions()); +    emitDictElement("covered", Summary.FunctionCoverage.getExecuted());      emitDictElement("percent", Summary.FunctionCoverage.getPercentCovered());      // End Function Coverage Summary.      emitDictEnd(); @@ -380,8 +389,8 @@ class CoverageExporterJson {      // Start Instantiation Coverage Summary.      emitDictStart(); -    emitDictElement("count", Summary.InstantiationCoverage.NumFunctions); -    emitDictElement("covered", Summary.InstantiationCoverage.Executed); +    emitDictElement("count", Summary.InstantiationCoverage.getNumFunctions()); +    emitDictElement("covered", Summary.InstantiationCoverage.getExecuted());      emitDictElement("percent",                      Summary.InstantiationCoverage.getPercentCovered());      // End Function Coverage Summary. @@ -391,9 +400,11 @@ class CoverageExporterJson {      // Start Region Coverage Summary.      emitDictStart(); -    emitDictElement("count", Summary.RegionCoverage.NumRegions); -    emitDictElement("covered", Summary.RegionCoverage.Covered); -    emitDictElement("notcovered", Summary.RegionCoverage.NotCovered); +    emitDictElement("count", Summary.RegionCoverage.getNumRegions()); +    emitDictElement("covered", Summary.RegionCoverage.getCovered()); +    emitDictElement("notcovered", +                    Summary.RegionCoverage.getNumRegions() - +                        Summary.RegionCoverage.getCovered());      emitDictElement("percent", Summary.RegionCoverage.getPercentCovered());      // End Region Coverage Summary.      emitDictEnd(); @@ -403,8 +414,9 @@ class CoverageExporterJson {    }  public: -  CoverageExporterJson(const CoverageMapping &CoverageMapping, raw_ostream &OS) -      : OS(OS), Coverage(CoverageMapping) { +  CoverageExporterJson(const CoverageMapping &CoverageMapping, +                       const CoverageViewOptions &Options, raw_ostream &OS) +      : Options(Options), OS(OS), Coverage(CoverageMapping) {      State.push(JsonState::None);    } @@ -414,8 +426,9 @@ public:  /// \brief Export the given CoverageMapping to a JSON Format.  void exportCoverageDataToJson(const CoverageMapping &CoverageMapping, +                              const CoverageViewOptions &Options,                                raw_ostream &OS) { -  auto Exporter = CoverageExporterJson(CoverageMapping, OS); +  auto Exporter = CoverageExporterJson(CoverageMapping, Options, OS);    Exporter.print();  }  | 
