From: Ying Yi Date: Tue, 6 Sep 2016 21:41:38 +0000 (+0000) Subject: [llvm-cov] Add the project summary to the text coverage report for each source file. X-Git-Tag: llvmorg-4.0.0-rc1~10513 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=24e91bd05fec332b73a991fa1f59160ea1c1e18e;p=platform%2Fupstream%2Fllvm.git [llvm-cov] Add the project summary to the text coverage report for each source file. This patch is a spin-off from https://reviews.llvm.org/D23922. It extends the text view to preserve the same feature as the html view. Differential Revision: https://reviews.llvm.org/D24241 llvm-svn: 280756 --- diff --git a/llvm/test/tools/llvm-cov/native_separators.c b/llvm/test/tools/llvm-cov/native_separators.c index 2133feb..e7659d7 100644 --- a/llvm/test/tools/llvm-cov/native_separators.c +++ b/llvm/test/tools/llvm-cov/native_separators.c @@ -20,6 +20,11 @@ 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:{{$}} +// TEXT: {{^}}Binary: {{.*}}tools\llvm-cov\Inputs\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 diff --git a/llvm/test/tools/llvm-cov/showTemplateInstantiations.cpp b/llvm/test/tools/llvm-cov/showTemplateInstantiations.cpp index 5a656db..db9576d 100644 --- a/llvm/test/tools/llvm-cov/showTemplateInstantiations.cpp +++ b/llvm/test/tools/llvm-cov/showTemplateInstantiations.cpp @@ -12,7 +12,7 @@ int func(T x) { // ALL-NEXT: [[@LINE]]| 2|int func(T x) { int j = 1; // ALL-NEXT: [[@LINE]]| 0| int j = 1; } // ALL-NEXT: [[@LINE]]| 2|} - // SHARED: {{^ *(\| )?}}_Z4funcIbEiT_: + // SHARED: {{^ *(\| )?}}Function: _Z4funcIbEiT_: // SHARED: [[@LINE-9]]| 1|int func(T x) { // SHARED-NEXT: [[@LINE-9]]| 1| if(x) // SHARED-NEXT: [[@LINE-9]]| 1| return 0; @@ -21,8 +21,8 @@ int func(T x) { // ALL-NEXT: [[@LINE]]| 2|int func(T x) { // SHARED-NEXT: [[@LINE-9]]| 0| int j = 1; // SHARED-NEXT: [[@LINE-9]]| 1|} - // ALL: {{^ *}}| _Z4funcIiEiT_: - // FILTER-NOT: {{^ *(\| )?}} _Z4funcIiEiT_: + // ALL: {{^ *}}| Function: _Z4funcIiEiT_: + // FILTER-NOT: {{^ *(\| )?}}Function: _Z4funcIiEiT_: // ALL: [[@LINE-19]]| 1|int func(T x) { // ALL-NEXT: [[@LINE-19]]| 1| if(x) // ALL-NEXT: [[@LINE-19]]| 0| return 0; diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp index 00c5470..02309c9 100644 --- a/llvm/tools/llvm-cov/CodeCoverage.cpp +++ b/llvm/tools/llvm-cov/CodeCoverage.cpp @@ -669,7 +669,7 @@ int CodeCoverageTool::show(int argc, const char **argv, // Show files bool ShowFilenames = - (SourceFiles.size() != 1) || + (SourceFiles.size() != 1) || ViewOpts.hasOutputDirectory() || (ViewOpts.Format == CoverageViewOptions::OutputFormat::HTML); if (SourceFiles.empty()) diff --git a/llvm/tools/llvm-cov/SourceCoverageView.cpp b/llvm/tools/llvm-cov/SourceCoverageView.cpp index 323352a..47980ab 100644 --- a/llvm/tools/llvm-cov/SourceCoverageView.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageView.cpp @@ -142,6 +142,15 @@ SourceCoverageView::create(StringRef SourceName, const MemoryBuffer &File, llvm_unreachable("Unknown coverage output format!"); } +std::string SourceCoverageView::getNativeSourceName() const { + std::string SourceFile = isFunctionView() ? "Function: " : "Source: "; + SourceFile += getSourceName().str(); + SmallString<128> SourceText(SourceFile); + sys::path::remove_dots(SourceText, /*remove_dot_dots=*/true); + sys::path::native(SourceText); + return SourceText.c_str(); +} + void SourceCoverageView::addExpansion( const coverage::CounterMappingRegion &Region, std::unique_ptr View) { diff --git a/llvm/tools/llvm-cov/SourceCoverageView.h b/llvm/tools/llvm-cov/SourceCoverageView.h index 410c8fd..63c5b65 100644 --- a/llvm/tools/llvm-cov/SourceCoverageView.h +++ b/llvm/tools/llvm-cov/SourceCoverageView.h @@ -278,6 +278,9 @@ public: StringRef getSourceName() const { return SourceName; } + /// \brief Return the source name formatted for the host OS. + std::string getNativeSourceName() const; + bool isFunctionView() const { return FunctionView; } const CoverageViewOptions &getOptions() const { return Options; } diff --git a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp index 7e069de..52e594f 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp @@ -342,12 +342,7 @@ void SourceCoverageViewHTML::renderSourceName(raw_ostream &OS, bool WholeFile, unsigned FirstUncoveredLineNo) { OS << BeginSourceNameDiv; // Render the source name for the view. - std::string SourceFile = isFunctionView() ? "Function: " : "Source: "; - SourceFile += getSourceName().str(); - SmallString<128> SourceText(SourceFile); - sys::path::remove_dots(SourceText, /*remove_dot_dots=*/true); - sys::path::native(SourceText); - OS << tag("pre", escape(SourceText, getOptions())); + OS << tag("pre", escape(getNativeSourceName(), getOptions())); if (WholeFile) { // Render the object file name for the view. OS << tag("pre", diff --git a/llvm/tools/llvm-cov/SourceCoverageViewText.cpp b/llvm/tools/llvm-cov/SourceCoverageViewText.cpp index 52e405e..6dec4c7 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewText.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewText.cpp @@ -65,11 +65,11 @@ void SourceCoverageViewText::renderViewFooter(raw_ostream &) {} void SourceCoverageViewText::renderSourceName(raw_ostream &OS, bool WholeFile, unsigned FirstUncoveredLineNo) { - getOptions().colored_ostream(OS, raw_ostream::CYAN) << getSourceName() + getOptions().colored_ostream(OS, raw_ostream::CYAN) << getNativeSourceName() << ":\n"; if (WholeFile) { getOptions().colored_ostream(OS, raw_ostream::CYAN) - << getOptions().ObjectFilename << ":\n"; + << "Binary: " << getOptions().ObjectFilename << ":\n"; } }