From 1ec34b0c61953fb3ba905246d277062288c23019 Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Sat, 14 Feb 2015 02:05:05 +0000 Subject: [PATCH] llvm-cov: Actually use the command line arguments when reporting This code didn't really make sense as is. If a filename is passed in, the user obviously wants the coverage *for that file*, not *for everything*. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229217 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/llvm-cov/Inputs/report.covmapping | Bin 256 -> 219 bytes test/tools/llvm-cov/report.cpp | 20 ++++++++++++++++--- tools/llvm-cov/CodeCoverage.cpp | 17 ++++++++-------- tools/llvm-cov/CoverageReport.cpp | 5 +++-- tools/llvm-cov/CoverageReport.h | 2 +- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/test/tools/llvm-cov/Inputs/report.covmapping b/test/tools/llvm-cov/Inputs/report.covmapping index 32d84bc7273adbe5264467ac5991e518cfda38ce..5d0bfc116816488ed3f75b5346441c0011d3b7ad 100644 GIT binary patch delta 16 XcmZo*y3IJjgpp^WX$~XT#N(C#DbWP} delta 53 zcmcc3*uXTwgwb%KX^xt{erR!OQL%nvPHKgIPEJ{_eo1O^iGE3beoir%ubZ4-ray6! FB>?O76Da@y diff --git a/test/tools/llvm-cov/report.cpp b/test/tools/llvm-cov/report.cpp index 297322a775d..570012e4e40 100644 --- a/test/tools/llvm-cov/report.cpp +++ b/test/tools/llvm-cov/report.cpp @@ -1,7 +1,21 @@ -// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -no-colors 2>&1 | FileCheck %s +// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -no-colors -filename-equivalence 2>&1 | FileCheck %s +// RUN: llvm-cov report %S/Inputs/report.covmapping -instr-profile %S/Inputs/report.profdata -no-colors -filename-equivalence report.cpp 2>&1 | FileCheck -check-prefix=FILT-NEXT %s -// CHECK: Filename Regions Miss Cover Functions Executed -// CHECK: TOTAL 5 2 60.00% 4 75.00% +// CHECK: Filename Regions Miss Cover Functions Executed +// CHECK-NEXT: --- +// CHECK-NEXT: report.cpp 5 2 60.00% 4 75.00% +// CHECK-NEXT: --- +// CHECK-NEXT: TOTAL 5 2 60.00% 4 75.00% + +// FILT: File 'report.cpp': +// FILT-NEXT: Name Regions Miss Cover Lines Miss Cover +// FILT-NEXT: --- +// FILT-NEXT: _Z3foob 2 1 50.00% 4 2 50.00% +// FILT-NEXT: _Z3barv 1 0 100.00% 2 0 100.00% +// FILT-NEXT: _Z4funcv 1 1 0.00% 2 2 0.00% +// FILT-NEXT: main 1 0 100.00% 5 0 100.00% +// FILT-NEXT: --- +// FILT-NEXT: TOTAL 5 2 60.00% 13 4 69.23% void foo(bool cond) { if (cond) { diff --git a/tools/llvm-cov/CodeCoverage.cpp b/tools/llvm-cov/CodeCoverage.cpp index feaa3fcd857..cf8ab337797 100644 --- a/tools/llvm-cov/CodeCoverage.cpp +++ b/tools/llvm-cov/CodeCoverage.cpp @@ -324,10 +324,11 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) { for (const auto &File : InputSourceFiles) { SmallString<128> Path(File); - if (std::error_code EC = sys::fs::make_absolute(Path)) { - errs() << "error: " << File << ": " << EC.message(); - return 1; - } + if (!CompareFilenamesOnly) + if (std::error_code EC = sys::fs::make_absolute(Path)) { + errs() << "error: " << File << ": " << EC.message(); + return 1; + } SourceFiles.push_back(Path.str()); } return 0; @@ -459,12 +460,10 @@ int CodeCoverageTool::report(int argc, const char **argv, return 1; CoverageReport Report(ViewOpts, std::move(Coverage)); - if (SourceFiles.empty() && Filters.empty()) { + if (SourceFiles.empty()) Report.renderFileReports(llvm::outs()); - return 0; - } - - Report.renderFunctionReports(llvm::outs()); + else + Report.renderFunctionReports(SourceFiles, llvm::outs()); return 0; } diff --git a/tools/llvm-cov/CoverageReport.cpp b/tools/llvm-cov/CoverageReport.cpp index db0754268c3..497c2f88f26 100644 --- a/tools/llvm-cov/CoverageReport.cpp +++ b/tools/llvm-cov/CoverageReport.cpp @@ -155,9 +155,10 @@ void CoverageReport::render(const FunctionCoverageSummary &Function, OS << "\n"; } -void CoverageReport::renderFunctionReports(raw_ostream &OS) { +void CoverageReport::renderFunctionReports(ArrayRef Files, + raw_ostream &OS) { bool isFirst = true; - for (StringRef Filename : Coverage->getUniqueSourceFiles()) { + for (StringRef Filename : Files) { if (isFirst) isFirst = false; else diff --git a/tools/llvm-cov/CoverageReport.h b/tools/llvm-cov/CoverageReport.h index 78e49d9b714..7ec3df90b8f 100644 --- a/tools/llvm-cov/CoverageReport.h +++ b/tools/llvm-cov/CoverageReport.h @@ -32,7 +32,7 @@ public: std::unique_ptr Coverage) : Options(Options), Coverage(std::move(Coverage)) {} - void renderFunctionReports(raw_ostream &OS); + void renderFunctionReports(ArrayRef Files, raw_ostream &OS); void renderFileReports(raw_ostream &OS); }; -- 2.34.1