mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-14 16:40:42 +00:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280756 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fec7b4848f
commit
84f34c0155
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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())
|
||||
|
@ -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<SourceCoverageView> View) {
|
||||
|
@ -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; }
|
||||
|
@ -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",
|
||||
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user