diff options
author | Alan Phipps <a-phipps@ti.com> | 2023-12-13 14:13:56 -0600 |
---|---|---|
committer | Alan Phipps <a-phipps@ti.com> | 2023-12-13 15:10:05 -0600 |
commit | 8ecbb0404d740d1ab173554e47cef39cd5e3ef8c (patch) | |
tree | 93cc0afc02965f5ccc27dc83c7389662ef772661 /llvm/tools/llvm-cov/CoverageReport.cpp | |
parent | 14d7e0bb0f75066da5d2eff718b6d59215a02077 (diff) | |
download | llvm-8ecbb0404d740d1ab173554e47cef39cd5e3ef8c.zip llvm-8ecbb0404d740d1ab173554e47cef39cd5e3ef8c.tar.gz llvm-8ecbb0404d740d1ab173554e47cef39cd5e3ef8c.tar.bz2 |
Reland "[Coverage][llvm-cov] Enable MC/DC Support in LLVM Source-based Code Coverage (2/3)"
Part 2 of 3. This includes the Visualization and Evaluation components.
Differential Revision: https://reviews.llvm.org/D138847
Diffstat (limited to 'llvm/tools/llvm-cov/CoverageReport.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/CoverageReport.cpp | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/llvm/tools/llvm-cov/CoverageReport.cpp b/llvm/tools/llvm-cov/CoverageReport.cpp index eae2653..8cc073e 100644 --- a/llvm/tools/llvm-cov/CoverageReport.cpp +++ b/llvm/tools/llvm-cov/CoverageReport.cpp @@ -86,9 +86,9 @@ Column column(StringRef Str, unsigned Width, const T &Value) { } // Specify the default column widths. -size_t FileReportColumns[] = {25, 12, 18, 10, 12, 18, 10, 16, - 16, 10, 12, 18, 10, 12, 18, 10}; -size_t FunctionReportColumns[] = {25, 10, 8, 8, 10, 8, 8, 10, 8, 8}; +size_t FileReportColumns[] = {25, 12, 18, 10, 12, 18, 10, 16, 16, 10, + 12, 18, 10, 12, 18, 10, 20, 21, 10}; +size_t FunctionReportColumns[] = {25, 10, 8, 8, 10, 8, 8, 10, 8, 8, 20, 8, 8}; /// Adjust column widths to fit long file paths and function names. void adjustColumnWidths(ArrayRef<StringRef> Files, @@ -291,6 +291,22 @@ void CoverageReport::render(const FileCoverageSummary &File, OS << column("-", FileReportColumns[15], Column::RightAlignment); } + if (Options.ShowMCDCSummary) { + OS << format("%*u", FileReportColumns[16], + (unsigned)File.MCDCCoverage.getNumPairs()); + Options.colored_ostream(OS, LineCoverageColor) + << format("%*u", FileReportColumns[17], + (unsigned)(File.MCDCCoverage.getNumPairs() - + File.MCDCCoverage.getCoveredPairs())); + if (File.MCDCCoverage.getNumPairs()) + Options.colored_ostream(OS, LineCoverageColor) + << format("%*.2f", FileReportColumns[18] - 1, + File.MCDCCoverage.getPercentCovered()) + << '%'; + else + OS << column("-", FileReportColumns[18], Column::RightAlignment); + } + OS << "\n"; } @@ -338,6 +354,19 @@ void CoverageReport::render(const FunctionCoverageSummary &Function, Function.BranchCoverage.getPercentCovered()) << '%'; } + if (Options.ShowMCDCSummary) { + OS << format("%*u", FunctionReportColumns[10], + (unsigned)Function.MCDCCoverage.getNumPairs()); + Options.colored_ostream(OS, LineCoverageColor) + << format("%*u", FunctionReportColumns[11], + (unsigned)(Function.MCDCCoverage.getNumPairs() - + Function.MCDCCoverage.getCoveredPairs())); + Options.colored_ostream( + OS, determineCoveragePercentageColor(Function.MCDCCoverage)) + << format("%*.2f", FunctionReportColumns[12] - 1, + Function.MCDCCoverage.getPercentCovered()) + << '%'; + } OS << "\n"; } @@ -370,6 +399,11 @@ void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files, OS << column("Branches", FunctionReportColumns[7], Column::RightAlignment) << column("Miss", FunctionReportColumns[8], Column::RightAlignment) << column("Cover", FunctionReportColumns[9], Column::RightAlignment); + if (Options.ShowMCDCSummary) + OS << column("MC/DC Conditions", FunctionReportColumns[10], + Column::RightAlignment) + << column("Miss", FunctionReportColumns[11], Column::RightAlignment) + << column("Cover", FunctionReportColumns[12], Column::RightAlignment); OS << "\n"; renderDivider(FunctionReportColumns, OS); OS << "\n"; @@ -380,6 +414,7 @@ void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files, Totals.RegionCoverage += Function.RegionCoverage; Totals.LineCoverage += Function.LineCoverage; Totals.BranchCoverage += Function.BranchCoverage; + Totals.MCDCCoverage += Function.MCDCCoverage; render(Function, DC, OS); } if (Totals.ExecutionCount) { @@ -502,6 +537,12 @@ void CoverageReport::renderFileReports( << column("Missed Branches", FileReportColumns[14], Column::RightAlignment) << column("Cover", FileReportColumns[15], Column::RightAlignment); + if (Options.ShowMCDCSummary) + OS << column("MC/DC Conditions", FileReportColumns[16], + Column::RightAlignment) + << column("Missed Conditions", FileReportColumns[17], + Column::RightAlignment) + << column("Cover", FileReportColumns[18], Column::RightAlignment); OS << "\n"; renderDivider(FileReportColumns, OS); OS << "\n"; |