[llvm] r312969 - [llvm-cov] Allow hiding instantiation/region coverage from summary tables
Eli Friedman via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 11 15:56:20 PDT 2017
Author: efriedma
Date: Mon Sep 11 15:56:20 2017
New Revision: 312969
URL: http://llvm.org/viewvc/llvm-project?rev=312969&view=rev
Log:
[llvm-cov] Allow hiding instantiation/region coverage from summary tables
Region coverage is difficult to explain without going deep into how
coverage is implemented. Instantiation coverage is easier to explain,
but probably not useful in most cases (templates don't exist in C, and
most C++ code contains relatively few templates).
This patch adds the options "-show-region-summary" and
"-show-instantiation-summary" to allow hiding those columns.
"-show-instantiation-summary" is turned off by default.
Modified:
llvm/trunk/test/tools/llvm-cov/hideUnexecutedSubviews.test
llvm/trunk/test/tools/llvm-cov/report.cpp
llvm/trunk/test/tools/llvm-cov/showLineExecutionCounts.cpp
llvm/trunk/tools/llvm-cov/CodeCoverage.cpp
llvm/trunk/tools/llvm-cov/CoverageReport.cpp
llvm/trunk/tools/llvm-cov/CoverageViewOptions.h
llvm/trunk/tools/llvm-cov/SourceCoverageViewHTML.cpp
Modified: llvm/trunk/test/tools/llvm-cov/hideUnexecutedSubviews.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/hideUnexecutedSubviews.test?rev=312969&r1=312968&r2=312969&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/hideUnexecutedSubviews.test (original)
+++ llvm/trunk/test/tools/llvm-cov/hideUnexecutedSubviews.test Mon Sep 11 15:56:20 2017
@@ -1,8 +1,8 @@
RUN: llvm-profdata merge %S/Inputs/hideUnexecutedSubviews.proftext -o %t.profdata
-RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %t.profdata -path-equivalence=/tmp,%S %S/showTemplateInstantiations.cpp | FileCheck -check-prefix=FILE %s
+RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %t.profdata -show-region-summary -show-instantiation-summary -path-equivalence=/tmp,%S %S/showTemplateInstantiations.cpp | FileCheck -check-prefix=FILE %s
-RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %t.profdata -format html -o %t.html.dir -path-equivalence=/tmp,%S %S/showTemplateInstantiations.cpp
+RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %t.profdata -format html -show-region-summary -show-instantiation-summary -o %t.html.dir -path-equivalence=/tmp,%S %S/showTemplateInstantiations.cpp
RUN: FileCheck -check-prefix=FILE %s -input-file %t.html.dir/coverage/tmp/showTemplateInstantiations.cpp.html
FILE: Unexecuted instantiation: _Z4funcIbEiT_
Modified: llvm/trunk/test/tools/llvm-cov/report.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/report.cpp?rev=312969&r1=312968&r2=312969&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/report.cpp (original)
+++ llvm/trunk/test/tools/llvm-cov/report.cpp Mon Sep 11 15:56:20 2017
@@ -1,4 +1,4 @@
-// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -path-equivalence=,%S 2>&1 | FileCheck %s
+// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -path-equivalence=,%S 2>&1 -show-region-summary -show-instantiation-summary | FileCheck %s
// RUN: llvm-cov report -show-functions %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -path-equivalence=,%S %s 2>&1 | FileCheck -check-prefix=FILT %s
// RUN: llvm-cov report -show-functions %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -path-equivalence=,%S %s does-not-exist.cpp 2>&1 | FileCheck -check-prefix=FILT %s
Modified: llvm/trunk/test/tools/llvm-cov/showLineExecutionCounts.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/showLineExecutionCounts.cpp?rev=312969&r1=312968&r2=312969&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/showLineExecutionCounts.cpp (original)
+++ llvm/trunk/test/tools/llvm-cov/showLineExecutionCounts.cpp Mon Sep 11 15:56:20 2017
@@ -80,14 +80,11 @@ int main() {
// HTML-INDEX-LABEL: <table>
// HTML-INDEX: <td class='column-entry-left'>Filename</td>
// HTML-INDEX: <td class='column-entry'>Function Coverage</td>
-// HTML-INDEX: <td class='column-entry'>Instantiation Coverage</td>
// HTML-INDEX: <td class='column-entry'>Line Coverage</td>
// HTML-INDEX: <td class='column-entry'>Region Coverage</td>
// HTML-INDEX: <a href='coverage{{.*}}showLineExecutionCounts.cpp.html'{{.*}}showLineExecutionCounts.cpp</a>
// HTML-INDEX: <td class='column-entry-green'>
// HTML-INDEX: 100.00% (1/1)
-// HTML-INDEX: <td class='column-entry-green'>
-// HTML-INDEX: 100.00% (1/1)
// HTML-INDEX: <td class='column-entry-yellow'>
// HTML-INDEX: 80.00% (16/20)
// HTML-INDEX: <td class='column-entry-red'>
Modified: llvm/trunk/tools/llvm-cov/CodeCoverage.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/CodeCoverage.cpp?rev=312969&r1=312968&r2=312969&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cov/CodeCoverage.cpp (original)
+++ llvm/trunk/tools/llvm-cov/CodeCoverage.cpp Mon Sep 11 15:56:20 2017
@@ -608,6 +608,15 @@ int CodeCoverageTool::run(Command Cmd, i
cl::list<std::string> DemanglerOpts(
"Xdemangler", cl::desc("<demangler-path>|<demangler-option>"));
+ cl::opt<bool> RegionSummary(
+ "show-region-summary", cl::Optional,
+ cl::desc("Show region statistics in summary table"),
+ cl::init(true));
+
+ cl::opt<bool> InstantiationSummary(
+ "show-instantiation-summary", cl::Optional,
+ cl::desc("Show instantiation statistics in summary table"));
+
auto commandLineParser = [&, this](int argc, const char **argv) -> int {
cl::ParseCommandLineOptions(argc, argv, "LLVM code coverage tool\n");
ViewOpts.Debug = DebugDump;
@@ -718,6 +727,9 @@ int CodeCoverageTool::run(Command Cmd, i
::exit(0);
}
+ ViewOpts.ShowRegionSummary = RegionSummary;
+ ViewOpts.ShowInstantiationSummary = InstantiationSummary;
+
return 0;
};
Modified: llvm/trunk/tools/llvm-cov/CoverageReport.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/CoverageReport.cpp?rev=312969&r1=312968&r2=312969&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cov/CoverageReport.cpp (original)
+++ llvm/trunk/tools/llvm-cov/CoverageReport.cpp Mon Sep 11 15:56:20 2017
@@ -181,18 +181,22 @@ void CoverageReport::render(const FileCo
SmallString<256> FileName = File.Name;
sys::path::remove_dots(FileName, /*remove_dot_dots=*/true);
sys::path::native(FileName);
- OS << column(FileName, FileReportColumns[0], Column::NoTrim)
- << format("%*u", FileReportColumns[1],
- (unsigned)File.RegionCoverage.NumRegions);
- Options.colored_ostream(OS, FileCoverageColor) << format(
- "%*u", FileReportColumns[2], (unsigned)File.RegionCoverage.NotCovered);
- if (File.RegionCoverage.NumRegions)
- Options.colored_ostream(OS, FileCoverageColor)
- << format("%*.2f", FileReportColumns[3] - 1,
- File.RegionCoverage.getPercentCovered())
- << '%';
- else
- OS << column("-", FileReportColumns[3], Column::RightAlignment);
+ OS << column(FileName, FileReportColumns[0], Column::NoTrim);
+
+ if (Options.ShowRegionSummary) {
+ OS << format("%*u", FileReportColumns[1],
+ (unsigned)File.RegionCoverage.NumRegions);
+ Options.colored_ostream(OS, FileCoverageColor) << format(
+ "%*u", FileReportColumns[2], (unsigned)File.RegionCoverage.NotCovered);
+ if (File.RegionCoverage.NumRegions)
+ Options.colored_ostream(OS, FileCoverageColor)
+ << format("%*.2f", FileReportColumns[3] - 1,
+ File.RegionCoverage.getPercentCovered())
+ << '%';
+ else
+ OS << column("-", FileReportColumns[3], Column::RightAlignment);
+ }
+
OS << format("%*u", FileReportColumns[4],
(unsigned)File.FunctionCoverage.NumFunctions);
OS << format("%*u", FileReportColumns[5],
@@ -205,18 +209,22 @@ void CoverageReport::render(const FileCo
<< '%';
else
OS << column("-", FileReportColumns[6], Column::RightAlignment);
- OS << format("%*u", FileReportColumns[7],
- (unsigned)File.InstantiationCoverage.NumFunctions);
- OS << format("%*u", FileReportColumns[8],
- (unsigned)(File.InstantiationCoverage.NumFunctions -
- File.InstantiationCoverage.Executed));
- if (File.InstantiationCoverage.NumFunctions)
- Options.colored_ostream(OS, InstantiationCoverageColor)
- << format("%*.2f", FileReportColumns[9] - 1,
- File.InstantiationCoverage.getPercentCovered())
- << '%';
- else
- OS << column("-", FileReportColumns[9], Column::RightAlignment);
+
+ if (Options.ShowInstantiationSummary) {
+ OS << format("%*u", FileReportColumns[7],
+ (unsigned)File.InstantiationCoverage.NumFunctions);
+ OS << format("%*u", FileReportColumns[8],
+ (unsigned)(File.InstantiationCoverage.NumFunctions -
+ File.InstantiationCoverage.Executed));
+ if (File.InstantiationCoverage.NumFunctions)
+ Options.colored_ostream(OS, InstantiationCoverageColor)
+ << format("%*.2f", FileReportColumns[9] - 1,
+ File.InstantiationCoverage.getPercentCovered())
+ << '%';
+ else
+ OS << column("-", FileReportColumns[9], Column::RightAlignment);
+ }
+
OS << format("%*u", FileReportColumns[10],
(unsigned)File.LineCoverage.NumLines);
Options.colored_ostream(OS, LineCoverageColor) << format(
@@ -359,17 +367,19 @@ void CoverageReport::renderFileReports(r
Filenames.emplace_back(FCS.Name);
adjustColumnWidths(Filenames, {});
- OS << column("Filename", FileReportColumns[0])
- << column("Regions", FileReportColumns[1], Column::RightAlignment)
- << column("Missed Regions", FileReportColumns[2], Column::RightAlignment)
- << column("Cover", FileReportColumns[3], Column::RightAlignment)
- << column("Functions", FileReportColumns[4], Column::RightAlignment)
+ OS << column("Filename", FileReportColumns[0]);
+ if (Options.ShowRegionSummary)
+ OS << column("Regions", FileReportColumns[1], Column::RightAlignment)
+ << column("Missed Regions", FileReportColumns[2], Column::RightAlignment)
+ << column("Cover", FileReportColumns[3], Column::RightAlignment);
+ OS << column("Functions", FileReportColumns[4], Column::RightAlignment)
<< column("Missed Functions", FileReportColumns[5], Column::RightAlignment)
- << column("Executed", FileReportColumns[6], Column::RightAlignment)
- << column("Instantiations", FileReportColumns[7], Column::RightAlignment)
- << column("Missed Insts.", FileReportColumns[8], Column::RightAlignment)
- << column("Executed", FileReportColumns[9], Column::RightAlignment)
- << column("Lines", FileReportColumns[10], Column::RightAlignment)
+ << column("Executed", FileReportColumns[6], Column::RightAlignment);
+ if (Options.ShowInstantiationSummary)
+ OS << column("Instantiations", FileReportColumns[7], Column::RightAlignment)
+ << column("Missed Insts.", FileReportColumns[8], Column::RightAlignment)
+ << column("Executed", FileReportColumns[9], Column::RightAlignment);
+ OS << column("Lines", FileReportColumns[10], Column::RightAlignment)
<< column("Missed Lines", FileReportColumns[11], Column::RightAlignment)
<< column("Cover", FileReportColumns[12], Column::RightAlignment) << "\n";
renderDivider(FileReportColumns, OS);
Modified: llvm/trunk/tools/llvm-cov/CoverageViewOptions.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/CoverageViewOptions.h?rev=312969&r1=312968&r2=312969&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cov/CoverageViewOptions.h (original)
+++ llvm/trunk/tools/llvm-cov/CoverageViewOptions.h Mon Sep 11 15:56:20 2017
@@ -30,6 +30,8 @@ struct CoverageViewOptions {
bool ShowExpandedRegions;
bool ShowFunctionInstantiations;
bool ShowFullFilenames;
+ bool ShowRegionSummary;
+ bool ShowInstantiationSummary;
OutputFormat Format;
std::string ShowOutputDirectory;
std::vector<std::string> DemanglerOpts;
Modified: llvm/trunk/tools/llvm-cov/SourceCoverageViewHTML.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/SourceCoverageViewHTML.cpp?rev=312969&r1=312968&r2=312969&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cov/SourceCoverageViewHTML.cpp (original)
+++ llvm/trunk/tools/llvm-cov/SourceCoverageViewHTML.cpp Mon Sep 11 15:56:20 2017
@@ -285,12 +285,16 @@ void CoveragePrinterHTML::closeViewFile(
}
/// Emit column labels for the table in the index.
-static void emitColumnLabelsForIndex(raw_ostream &OS) {
+static void emitColumnLabelsForIndex(raw_ostream &OS,
+ const CoverageViewOptions &Opts) {
SmallVector<std::string, 4> Columns;
Columns.emplace_back(tag("td", "Filename", "column-entry-left"));
- for (const char *Label : {"Function Coverage", "Instantiation Coverage",
- "Line Coverage", "Region Coverage"})
- Columns.emplace_back(tag("td", Label, "column-entry"));
+ Columns.emplace_back(tag("td", "Function Coverage", "column-entry"));
+ if (Opts.ShowInstantiationSummary)
+ Columns.emplace_back(tag("td", "Instantiation Coverage", "column-entry"));
+ Columns.emplace_back(tag("td", "Line Coverage", "column-entry"));
+ if (Opts.ShowRegionSummary)
+ Columns.emplace_back(tag("td", "Region Coverage", "column-entry"));
OS << tag("tr", join(Columns.begin(), Columns.end(), ""));
}
@@ -345,14 +349,16 @@ void CoveragePrinterHTML::emitFileSummar
AddCoverageTripleToColumn(FCS.FunctionCoverage.Executed,
FCS.FunctionCoverage.NumFunctions,
FCS.FunctionCoverage.getPercentCovered());
- AddCoverageTripleToColumn(FCS.InstantiationCoverage.Executed,
- FCS.InstantiationCoverage.NumFunctions,
- FCS.InstantiationCoverage.getPercentCovered());
+ if (Opts.ShowInstantiationSummary)
+ AddCoverageTripleToColumn(FCS.InstantiationCoverage.Executed,
+ FCS.InstantiationCoverage.NumFunctions,
+ FCS.InstantiationCoverage.getPercentCovered());
AddCoverageTripleToColumn(FCS.LineCoverage.Covered, FCS.LineCoverage.NumLines,
FCS.LineCoverage.getPercentCovered());
- AddCoverageTripleToColumn(FCS.RegionCoverage.Covered,
- FCS.RegionCoverage.NumRegions,
- FCS.RegionCoverage.getPercentCovered());
+ if (Opts.ShowRegionSummary)
+ AddCoverageTripleToColumn(FCS.RegionCoverage.Covered,
+ FCS.RegionCoverage.NumRegions,
+ FCS.RegionCoverage.getPercentCovered());
OS << tag("tr", join(Columns.begin(), Columns.end(), ""), "light-row");
}
@@ -395,7 +401,7 @@ Error CoveragePrinterHTML::createIndexFi
// Emit a table containing links to reports for each file in the covmapping.
// Exclude files which don't contain any regions.
OSRef << BeginCenteredDiv << BeginTable;
- emitColumnLabelsForIndex(OSRef);
+ emitColumnLabelsForIndex(OSRef, Opts);
FileCoverageSummary Totals("TOTALS");
auto FileReports =
CoverageReport::prepareFileReports(Coverage, Totals, SourceFiles, Opts);
More information about the llvm-commits
mailing list