summaryrefslogtreecommitdiff
path: root/tools/llvm-cov/CoverageExporterJson.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/llvm-cov/CoverageExporterJson.cpp')
-rw-r--r--tools/llvm-cov/CoverageExporterJson.cpp73
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();
}