diff options
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(); } |
