// Metadata section
-// CHECK: {"version":"1.0.0","type":"llvm.coverage.json.export","data":[
+// CHECK: {"version":"1.1.0","type":"llvm.coverage.json.export","data":[
// Open Export
// CHECK-SAME: {"object":"{{[^"]+}}","files":[
// Verify the Summary Section for the first file
// CHECK-SAME: "summary":{
-// CHECK-SAME: "lines":{"count":1,"covered":1,"percent":100,"noncode":0},
+// CHECK-SAME: "lines":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":1,"covered":1,"notcovered":0,"percent":100}}}
// Full Export Summary
// CHECK-SAME: "totals":{
-// CHECK-SAME: "lines":{"count":1,"covered":1,"percent":100,"noncode":0},
+// CHECK-SAME: "lines":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "instantiations":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":1,"covered":1,"notcovered":0,"percent":100}}
// Metadata section
-// CHECK: {"version":"1.0.0","type":"llvm.coverage.json.export","data":[
+// CHECK: {"version":"1.1.0","type":"llvm.coverage.json.export","data":[
// Open Export
// CHECK-SAME: {"object":"{{[^"]+}}","files":[
// Verify the Summary Section for the first file
// CHECK-SAME: "summary":{
-// CHECK-SAME: "lines":{"count":40,"covered":26,"percent":65,"noncode":0},
+// CHECK-SAME: "lines":{"count":40,"covered":26,"percent":65},
// CHECK-SAME: "functions":{"count":4,"covered":4,"percent":100},
// CHECK-SAME: "regions":{"count":19,"covered":11,"notcovered":8,"percent":57}}}
// Full Export Summary
// CHECK-SAME: "totals":{
-// CHECK-SAME: "lines":{"count":40,"covered":26,"percent":65,"noncode":0},
+// CHECK-SAME: "lines":{"count":40,"covered":26,"percent":65},
// CHECK-SAME: "functions":{"count":4,"covered":4,"percent":100},
// CHECK-SAME: "instantiations":{"count":4,"covered":4,"percent":100},
// CHECK-SAME: "regions":{"count":19,"covered":11,"notcovered":8,"percent":57}}
// Metadata section
-// CHECK: {"version":"1.0.0","type":"llvm.coverage.json.export","data":[
+// CHECK: {"version":"1.1.0","type":"llvm.coverage.json.export","data":[
// Open Export
// CHECK-SAME: {"object":"{{[^"]+}}","files":[
// Verify the Summary Section for the first file
// CHECK-SAME: "summary":{
-// CHECK-SAME: "lines":{"count":20,"covered":16,"percent":80,"noncode":0},
+// CHECK-SAME: "lines":{"count":20,"covered":16,"percent":80},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":10,"covered":7,"notcovered":3,"percent":70}}}
// Full Export Summary
// CHECK-SAME: "totals":{
-// CHECK-SAME: "lines":{"count":20,"covered":16,"percent":80,"noncode":0},
+// CHECK-SAME: "lines":{"count":20,"covered":16,"percent":80},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "instantiations":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":10,"covered":7,"notcovered":3,"percent":70}}
// Metadata section
-// CHECK: {"version":"1.0.0","type":"llvm.coverage.json.export","data":[
+// CHECK: {"version":"1.1.0","type":"llvm.coverage.json.export","data":[
// Open Export
// CHECK-SAME: {"object":"{{[^"]+}}","files":[
// Verify the Summary Section for the first file
// CHECK-SAME: "summary":{
-// CHECK-SAME: "lines":{"count":21,"covered":17,"percent":80,"noncode":0},
+// CHECK-SAME: "lines":{"count":21,"covered":17,"percent":80},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":10,"covered":7,"notcovered":3,"percent":70}}
// Full Export Summary
// CHECK-SAME: "totals":{
-// CHECK-SAME: "lines":{"count":21,"covered":17,"percent":80,"noncode":0},
+// CHECK-SAME: "lines":{"count":21,"covered":17,"percent":80},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "instantiations":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":10,"covered":7,"notcovered":3,"percent":70}}
// Metadata section
-// CHECK: {"version":"1.0.0","type":"llvm.coverage.json.export","data":[
+// CHECK: {"version":"1.1.0","type":"llvm.coverage.json.export","data":[
// Open Export
// CHECK-SAME: {"object":"{{[^"]+}}","files":[
// Verify the Summary Section for the first file
// CHECK-SAME: "summary":{
-// CHECK-SAME: "lines":{"count":17,"covered":15,"percent":88,"noncode":0},
+// CHECK-SAME: "lines":{"count":17,"covered":15,"percent":88},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":13,"covered":12,"notcovered":1,"percent":92}}
// Full Export Summary
// CHECK-SAME: "totals":{
-// CHECK-SAME: "lines":{"count":17,"covered":15,"percent":88,"noncode":0},
+// CHECK-SAME: "lines":{"count":17,"covered":15,"percent":88},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "instantiations":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":13,"covered":12,"notcovered":1,"percent":92}}
// Metadata section
-// CHECK: {"version":"1.0.0","type":"llvm.coverage.json.export","data":[
+// CHECK: {"version":"1.1.0","type":"llvm.coverage.json.export","data":[
// Open Export
// CHECK-SAME: {"object":"{{[^"]+}}","files":[
// Verify the Summary Section for the first file
// CHECK-SAME: "summary":{
-// CHECK-SAME: "lines":{"count":1,"covered":1,"percent":100,"noncode":0},
+// CHECK-SAME: "lines":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":1,"covered":1,"notcovered":0,"percent":100}}
// Full Export Summary
// CHECK-SAME: "totals":{
-// CHECK-SAME: "lines":{"count":1,"covered":1,"percent":100,"noncode":0},
+// CHECK-SAME: "lines":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "functions":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "instantiations":{"count":1,"covered":1,"percent":100},
// CHECK-SAME: "regions":{"count":1,"covered":1,"notcovered":0,"percent":100}
#include "llvm/ProfileData/Coverage/CoverageMapping.h"
#include <stack>
-/// \brief Major version of the JSON Coverage Export Format.
-#define LLVM_COVERAGE_EXPORT_JSON_MAJOR 1
-
-/// \brief Minor version of the JSON Coverage Export Format.
-#define LLVM_COVERAGE_EXPORT_JSON_MINOR 0
-
-/// \brief Patch version of the JSON Coverage Export Format.
-#define LLVM_COVERAGE_EXPORT_JSON_PATCH 0
-
/// \brief The semantic version combined as a string.
-#define LLVM_COVERAGE_EXPORT_JSON_STR "1.0.0"
+#define LLVM_COVERAGE_EXPORT_JSON_STR "1.1.0"
/// \brief Unique type identifier for JSON coverage export.
#define LLVM_COVERAGE_EXPORT_JSON_TYPE_STR "llvm.coverage.json.export"
emitDictElement("count", Summary.LineCoverage.NumLines);
emitDictElement("covered", Summary.LineCoverage.Covered);
emitDictElement("percent", Summary.LineCoverage.getPercentCovered());
- emitDictElement("noncode", Summary.LineCoverage.NonCodeLines);
// End Line Coverage Summary.
emitDictEnd();
return FunctionCoverageSummary(
Function.Name, Function.ExecutionCount,
RegionCoverageInfo(CoveredRegions, NumCodeRegions),
- LineCoverageInfo(CoveredLines, 0, NumLines));
+ LineCoverageInfo(CoveredLines, NumLines));
}
void FunctionCoverageSummary::update(const FunctionCoverageSummary &Summary) {
/// \brief The number of lines that weren't executed.
size_t NotCovered;
- /// \brief The number of lines that aren't code.
- size_t NonCodeLines;
-
/// \brief The total number of lines in a function/file.
size_t NumLines;
- LineCoverageInfo()
- : Covered(0), NotCovered(0), NonCodeLines(0), NumLines(0) {}
+ LineCoverageInfo() : Covered(0), NotCovered(0), NumLines(0) {}
- LineCoverageInfo(size_t Covered, size_t NumNonCodeLines, size_t NumLines)
- : Covered(Covered), NotCovered(NumLines - NumNonCodeLines - Covered),
- NonCodeLines(NumNonCodeLines), NumLines(NumLines) {}
+ LineCoverageInfo(size_t Covered, size_t NumLines)
+ : Covered(Covered), NotCovered(NumLines - Covered), NumLines(NumLines) {}
LineCoverageInfo &operator+=(const LineCoverageInfo &RHS) {
Covered += RHS.Covered;
NotCovered += RHS.NotCovered;
- NonCodeLines += RHS.NonCodeLines;
NumLines += RHS.NumLines;
return *this;
}
- bool isFullyCovered() const { return Covered == (NumLines - NonCodeLines); }
+ bool isFullyCovered() const { return Covered == NumLines; }
double getPercentCovered() const {
- if (NumLines - NonCodeLines == 0)
+ if (NumLines == 0)
return 0.0;
- return double(Covered) / double(NumLines - NonCodeLines) * 100.0;
+ return double(Covered) / double(NumLines) * 100.0;
}
};