[llvm-cov] Minor visual tweaks for html reports

- Change the location of the 'Region Coverage' column.
  - Use less css and text for some labels.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281145 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Vedant Kumar 2016-09-10 19:37:20 +00:00
parent 17648b37ae
commit ce19c1cc95
6 changed files with 35 additions and 76 deletions

View File

@ -15,16 +15,10 @@
// TEXT-INDEX: \tmp\native_separators.c
// HTML-INDEX: >tmp\native_separators.c</a>
// HTML: <pre>Source: \tmp\native_separators.c (Binary: native_separators.covmapping)</pre>
// HTML: <pre>\tmp\native_separators.c (Binary: native_separators.covmapping)</pre>
int main() {}
// RUN: llvm-cov show %S/Inputs/native_separators.covmapping -instr-profile=%t.profdata -filename-equivalence %s -o %t.dir
// RUN: FileCheck -check-prefixes=TEXT -input-file=%t.dir/coverage/tmp/native_separators.c.txt %s
// TEXT: Source: \tmp\native_separators.c (Binary: native_separators.covmapping)
// Re-purpose this file to test that "Go to first unexecuted line" feature.
// RUN: llvm-cov show %S/Inputs/native_separators.covmapping -instr-profile %t.profdata -filename-equivalence -format html -o %t.dir %s
// RUN: FileCheck -input-file %t.dir/coverage/tmp/native_separators.c.html %s
// CHECK-NOT: >Go to first unexecuted line<
// TEXT: \tmp\native_separators.c (Binary: native_separators.covmapping)

View File

@ -78,15 +78,15 @@ int main() { // TEXT: [[@LINE]]| 161|int main(
//
// RUN: FileCheck -check-prefix HTML-INDEX -input-file %t.html.dir/index.html %s
// HTML-INDEX-LABEL: <table>
// HTML-INDEX: <td class='column-entry'>Filename</td>
// HTML-INDEX: <td class='column-entry'>Region Coverage</td>
// HTML-INDEX: <td class='column-entry-left'>Filename</td>
// HTML-INDEX: <td class='column-entry'>Function 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-red'>
// HTML-INDEX: 70.00% (7/10)
// 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'>
// HTML-INDEX: 70.00% (7/10)
// HTML-INDEX: TOTALS

View File

@ -16,7 +16,7 @@ int main(int argc, char ** argv) {
// RUN: llvm-cov show %S/Inputs/showProjectSummary.covmapping -instr-profile %t.profdata -project-title "Test Suite" -filename-equivalence %s | FileCheck -check-prefixes=TEXT-TITLE,TEXT,TEXT-FILE,TEXT-HEADER %s
// RUN: llvm-cov show %S/Inputs/showProjectSummary.covmapping -instr-profile %t.profdata -project-title "Test Suite" -name=main -filename-equivalence %s | FileCheck -check-prefixes=TEXT-FUNCTION,TEXT-HEADER %s
// TEXT-TITLE: Test Suite
// TEXT: Code Coverage Report
// TEXT: Coverage Report
// TEXT: Created:
// TEXT-FILE: showProjectSummary.cpp:
// TEXT-FILE: showProjectSummary.covmapping:
@ -30,13 +30,10 @@ int main(int argc, char ** argv) {
// RUN: FileCheck -check-prefixes=HTML-TITLE,HTML -input-file %t.dir/index.html %s
// RUN: llvm-cov show %S/Inputs/showProjectSummary.covmapping -format=html -o %t.dir -instr-profile %t.profdata -project-title "Test Suite" -filename-equivalence -name=main %s
// RUN: FileCheck -check-prefixes=HTML-FUNCTION,HTML-HEADER -input-file %t.dir/functions.html %s
// HTML-TITLE: <div class='project-title'>
// HTML-TITLE: <span>Test Suite</span>
// HTML: <div class='report-title'>
// HTML: <span>Code Coverage Report</span>
// HTML: <div class='created-time'>
// HTML: <span>Created:
// HTML-FILE: <pre>Source: {{.*}}showProjectSummary.cpp (Binary: showProjectSummary.covmapping)</pre>
// HTML-TITLE: <h1>Test Suite</h1>
// HTML: <h2>Coverage Report</h2>
// HTML: <h4>Created:{{.*}}</h4>
// HTML-FILE: <pre>{{.*}}showProjectSummary.cpp (Binary: showProjectSummary.covmapping)</pre>
// HTML-FUNCTION: <pre>main</pre>
// HTML-UNCOVEREDLINE: <a href='#L8'>Go to first unexecuted line</a>
// HTML-HEADER: <tr><td><span><pre>Line No.</pre></span></td>

View File

@ -17,6 +17,7 @@ STYLE-DAG: .expansion-view
STYLE-DAG: .line-number
STYLE-DAG: .light-row
STYLE-DAG: .column-entry
STYLE-DAG: .column-entry-left
STYLE-DAG: .column-entry-yellow
STYLE-DAG: .column-entry-red
STYLE-DAG: .column-entry-green

View File

@ -150,7 +150,7 @@ std::string SourceCoverageView::getSourceName() const {
}
std::string SourceCoverageView::getVerboseSourceName() const {
return "Source: " + getSourceName() + " (Binary: " +
return getSourceName() + " (Binary: " +
sys::path::filename(getOptions().ObjectFilename).str() + ")";
}
@ -169,7 +169,7 @@ void SourceCoverageView::addInstantiation(
void SourceCoverageView::print(raw_ostream &OS, bool WholeFile,
bool ShowSourceName, unsigned ViewDepth) {
if (WholeFile)
renderCellInTitle(OS, "Code Coverage Report");
renderCellInTitle(OS, "Coverage Report");
renderViewHeader(OS);

View File

@ -119,6 +119,9 @@ table {
.column-entry {
text-align: right;
}
.column-entry-left {
text-align: left;
}
.column-entry-yellow {
text-align: right;
background-color: #ffffd0;
@ -192,23 +195,6 @@ td:first-child {
td:last-child {
border-right: none;
}
.project-title {
font-size:36.0pt;
line-height:200%;
font-family:Calibri;
font-weight: bold;
}
.report-title {
font-size:16.0pt;
line-height:120%;
font-family:Arial;
font-weight: bold;
}
.created-time {
font-size:14.0pt;
line-height:120%;
font-family:Arial;
}
)";
const char *EndHeader = "</head>";
@ -237,19 +223,11 @@ const char *BeginTable = "<table>";
const char *EndTable = "</table>";
const char *BeginProjectTitleDiv = "<div class='project-title'>";
const char *ProjectTitleTag = "h1";
const char *EndProjectTitleDiv = "</div>";
const char *ReportTitleTag = "h2";
const char *BeginReportTitleDiv = "<div class='report-title'>";
const char *EndReportTitleDiv = "</div>";
const char *BeginCreatedTimeDiv = "<div class='created-time'>";
const char *EndCreatedTimeDiv = "</div>";
const char *LineBreak = "<br>";
const char *CreatedTimeTag = "h4";
std::string getPathToStyle(StringRef ViewPath) {
std::string PathToStyle = "";
@ -308,8 +286,9 @@ void CoveragePrinterHTML::closeViewFile(OwnedStream OS) {
/// Emit column labels for the table in the index.
static void emitColumnLabelsForIndex(raw_ostream &OS) {
SmallVector<std::string, 4> Columns;
Columns.emplace_back(tag("td", "Filename", "column-entry-left"));
for (const char *Label :
{"Filename", "Region Coverage", "Function Coverage", "Line Coverage"})
{"Function Coverage", "Line Coverage", "Region Coverage"})
Columns.emplace_back(tag("td", Label, "column-entry"));
OS << tag("tr", join(Columns.begin(), Columns.end(), ""));
}
@ -334,7 +313,7 @@ void CoveragePrinterHTML::emitFileSummary(raw_ostream &OS, StringRef SF,
CellClass = "column-entry-red";
else if (Hit == Total)
CellClass = "column-entry-green";
Columns.emplace_back(tag("td", tag("pre", S, "code"), CellClass));
Columns.emplace_back(tag("td", tag("pre", S), CellClass));
};
// Simplify the display file path, and wrap it in a link if requested.
@ -351,16 +330,16 @@ void CoveragePrinterHTML::emitFileSummary(raw_ostream &OS, StringRef SF,
Filename = a(LinkTarget, LinkText);
}
Columns.emplace_back(tag("td", tag("pre", Filename, "code")));
AddCoverageTripleToColumn(
FCS.RegionCoverage.NumRegions - FCS.RegionCoverage.NotCovered,
FCS.RegionCoverage.NumRegions, FCS.RegionCoverage.getPercentCovered());
Columns.emplace_back(tag("td", tag("pre", Filename)));
AddCoverageTripleToColumn(FCS.FunctionCoverage.Executed,
FCS.FunctionCoverage.NumFunctions,
FCS.FunctionCoverage.getPercentCovered());
AddCoverageTripleToColumn(
FCS.LineCoverage.NumLines - FCS.LineCoverage.NotCovered,
FCS.LineCoverage.NumLines, FCS.LineCoverage.getPercentCovered());
AddCoverageTripleToColumn(
FCS.RegionCoverage.NumRegions - FCS.RegionCoverage.NotCovered,
FCS.RegionCoverage.NumRegions, FCS.RegionCoverage.getPercentCovered());
OS << tag("tr", join(Columns.begin(), Columns.end(), ""), "light-row");
}
@ -388,16 +367,10 @@ Error CoveragePrinterHTML::createIndexFile(
// Emit some basic information about the coverage report.
if (Opts.hasProjectTitle())
OSRef << BeginProjectTitleDiv
<< tag("span", escape(Opts.ProjectTitle, Opts)) << EndProjectTitleDiv;
OSRef << BeginReportTitleDiv
<< tag("span", escape("Code Coverage Report", Opts))
<< EndReportTitleDiv;
OSRef << tag(ProjectTitleTag, escape(Opts.ProjectTitle, Opts));
OSRef << tag(ReportTitleTag, "Coverage Report");
if (Opts.hasCreatedTime())
OSRef << BeginCreatedTimeDiv
<< tag("span", escape(Opts.CreatedTimeStr, Opts))
<< EndCreatedTimeDiv;
OSRef << LineBreak;
OSRef << tag(CreatedTimeTag, escape(Opts.CreatedTimeStr, Opts));
// Emit a table containing links to reports for each file in the covmapping.
CoverageReport Report(Opts, Coverage);
@ -415,7 +388,7 @@ Error CoveragePrinterHTML::createIndexFile(
}
void SourceCoverageViewHTML::renderViewHeader(raw_ostream &OS) {
OS << LineBreak << BeginCenteredDiv << BeginTable;
OS << BeginCenteredDiv << BeginTable;
}
void SourceCoverageViewHTML::renderViewFooter(raw_ostream &OS) {
@ -627,17 +600,11 @@ void SourceCoverageViewHTML::renderInstantiationView(raw_ostream &OS,
void SourceCoverageViewHTML::renderCellInTitle(raw_ostream &OS,
StringRef CellText) {
if (getOptions().hasProjectTitle())
OS << BeginProjectTitleDiv
<< tag("span", escape(getOptions().ProjectTitle, getOptions()))
<< EndProjectTitleDiv;
OS << BeginReportTitleDiv << tag("span", escape(CellText, getOptions()))
<< EndReportTitleDiv;
OS << tag(ProjectTitleTag, escape(getOptions().ProjectTitle, getOptions()));
OS << tag(ReportTitleTag, escape(CellText, getOptions()));
if (getOptions().hasCreatedTime())
OS << BeginCreatedTimeDiv
<< tag("span", escape(getOptions().CreatedTimeStr, getOptions()))
<< EndCreatedTimeDiv;
OS << tag(CreatedTimeTag,
escape(getOptions().CreatedTimeStr, getOptions()));
}
void SourceCoverageViewHTML::renderTableHeader(raw_ostream &OS,