diff options
author | Sean Eveson <eveson.sean@gmail.com> | 2017-09-27 16:20:07 +0000 |
---|---|---|
committer | Sean Eveson <eveson.sean@gmail.com> | 2017-09-27 16:20:07 +0000 |
commit | 950974fdb5b254e8b79390d0ba844462d68474de (patch) | |
tree | 2cd727d3892c2d0d7894e8a503dc2b56b65428fe /tools/llvm-cov | |
parent | 13e889d253cc0ebc982da3ef400e7ed3396aaf0a (diff) |
Revert "[llvm-cov] Create directory structure when filtering using -name*= options"
Test failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314314 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-cov')
-rw-r--r-- | tools/llvm-cov/CodeCoverage.cpp | 77 | ||||
-rw-r--r-- | tools/llvm-cov/CoverageReport.cpp | 15 | ||||
-rw-r--r-- | tools/llvm-cov/CoverageReport.h | 10 | ||||
-rw-r--r-- | tools/llvm-cov/SourceCoverageView.cpp | 5 | ||||
-rw-r--r-- | tools/llvm-cov/SourceCoverageView.h | 6 | ||||
-rw-r--r-- | tools/llvm-cov/SourceCoverageViewHTML.cpp | 10 | ||||
-rw-r--r-- | tools/llvm-cov/SourceCoverageViewHTML.h | 3 | ||||
-rw-r--r-- | tools/llvm-cov/SourceCoverageViewText.cpp | 8 | ||||
-rw-r--r-- | tools/llvm-cov/SourceCoverageViewText.h | 3 |
9 files changed, 53 insertions, 84 deletions
diff --git a/tools/llvm-cov/CodeCoverage.cpp b/tools/llvm-cov/CodeCoverage.cpp index 811ac53e244..1ea54a8cffd 100644 --- a/tools/llvm-cov/CodeCoverage.cpp +++ b/tools/llvm-cov/CodeCoverage.cpp @@ -35,9 +35,7 @@ #include "llvm/Support/Threading.h" #include "llvm/Support/ThreadPool.h" #include "llvm/Support/ToolOutputFile.h" - #include <functional> -#include <map> #include <system_error> using namespace llvm; @@ -528,8 +526,7 @@ void CodeCoverageTool::writeSourceFileView(StringRef SourceFile, auto OS = std::move(OSOrErr.get()); View->print(*OS.get(), /*Wholefile=*/true, - /*ShowSourceName=*/ShowFilenames, - /*ShowTitle=*/ViewOpts.hasOutputDirectory()); + /*ShowSourceName=*/ShowFilenames); Printer->closeViewFile(std::move(OS)); } @@ -848,54 +845,29 @@ int CodeCoverageTool::show(int argc, const char **argv, auto Printer = CoveragePrinter::create(ViewOpts); - if (SourceFiles.empty()) - // Get the source files from the function coverage mapping. - for (StringRef Filename : Coverage->getUniqueSourceFiles()) - SourceFiles.push_back(Filename); - - // Create an index out of the source files. - if (ViewOpts.hasOutputDirectory()) { - if (Error E = Printer->createIndexFile(SourceFiles, *Coverage, Filters)) { - error("Could not create index file!", toString(std::move(E))); + if (!Filters.empty()) { + auto OSOrErr = Printer->createViewFile("functions", /*InToplevel=*/true); + if (Error E = OSOrErr.takeError()) { + error("Could not create view file!", toString(std::move(E))); return 1; } - } + auto OS = std::move(OSOrErr.get()); - if (!Filters.empty()) { - // Build the map of filenames to functions. - std::map<llvm::StringRef, std::vector<const FunctionRecord *>> - FilenameFunctionMap; - for (const auto &SourceFile : SourceFiles) - for (const auto &Function : Coverage->getCoveredFunctions(SourceFile)) - if (Filters.matches(*Coverage.get(), Function)) - FilenameFunctionMap[SourceFile].push_back(&Function); - - // Only print filter matching functions for each file. - for (const auto &FileFunc : FilenameFunctionMap) { - const StringRef &File = FileFunc.first; - const auto &Functions = FileFunc.second; - - auto OSOrErr = Printer->createViewFile(File, /*InToplevel=*/false); - if (Error E = OSOrErr.takeError()) { - error("Could not create view file!", toString(std::move(E))); - return 1; - } - auto OS = std::move(OSOrErr.get()); - - bool ShowTitle = true; - for (const auto *Function : Functions) { - auto FunctionView = createFunctionView(*Function, *Coverage); - if (!FunctionView) { - warning("Could not read coverage for '" + Function->Name + "'."); - continue; - } - FunctionView->print(*OS.get(), /*WholeFile=*/false, - /*ShowSourceName=*/true, ShowTitle); - ShowTitle = false; + // Show functions. + for (const auto &Function : Coverage->getCoveredFunctions()) { + if (!Filters.matches(*Coverage.get(), Function)) + continue; + + auto mainView = createFunctionView(Function, *Coverage); + if (!mainView) { + warning("Could not read coverage for '" + Function.Name + "'."); + continue; } - Printer->closeViewFile(std::move(OS)); + mainView->print(*OS.get(), /*WholeFile=*/false, /*ShowSourceName=*/true); } + + Printer->closeViewFile(std::move(OS)); return 0; } @@ -904,6 +876,19 @@ int CodeCoverageTool::show(int argc, const char **argv, (SourceFiles.size() != 1) || ViewOpts.hasOutputDirectory() || (ViewOpts.Format == CoverageViewOptions::OutputFormat::HTML); + if (SourceFiles.empty()) + // Get the source files from the function coverage mapping. + for (StringRef Filename : Coverage->getUniqueSourceFiles()) + SourceFiles.push_back(Filename); + + // Create an index out of the source files. + if (ViewOpts.hasOutputDirectory()) { + if (Error E = Printer->createIndexFile(SourceFiles, *Coverage)) { + error("Could not create index file!", toString(std::move(E))); + return 1; + } + } + // If NumThreads is not specified, auto-detect a good default. if (NumThreads == 0) NumThreads = diff --git a/tools/llvm-cov/CoverageReport.cpp b/tools/llvm-cov/CoverageReport.cpp index 5c8ffe1216d..4c02bbcf2a3 100644 --- a/tools/llvm-cov/CoverageReport.cpp +++ b/tools/llvm-cov/CoverageReport.cpp @@ -322,8 +322,7 @@ void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files, std::vector<FileCoverageSummary> CoverageReport::prepareFileReports( const coverage::CoverageMapping &Coverage, FileCoverageSummary &Totals, - ArrayRef<std::string> Files, const CoverageViewOptions &Options, - const CoverageFilter &Filters) { + ArrayRef<std::string> Files, const CoverageViewOptions &Options) { std::vector<FileCoverageSummary> FileReports; unsigned LCP = getRedundantPrefixLen(Files); @@ -333,15 +332,11 @@ std::vector<FileCoverageSummary> CoverageReport::prepareFileReports( for (const auto &Group : Coverage.getInstantiationGroups(Filename)) { std::vector<FunctionCoverageSummary> InstantiationSummaries; for (const coverage::FunctionRecord *F : Group.getInstantiations()) { - if (!Filters.matches(Coverage, *F)) - continue; auto InstantiationSummary = FunctionCoverageSummary::get(Coverage, *F); Summary.addInstantiation(InstantiationSummary); Totals.addInstantiation(InstantiationSummary); InstantiationSummaries.push_back(InstantiationSummary); } - if (InstantiationSummaries.empty()) - continue; auto GroupSummary = FunctionCoverageSummary::get(Group, InstantiationSummaries); @@ -364,15 +359,13 @@ void CoverageReport::renderFileReports(raw_ostream &OS) const { std::vector<std::string> UniqueSourceFiles; for (StringRef SF : Coverage.getUniqueSourceFiles()) UniqueSourceFiles.emplace_back(SF.str()); - renderFileReports(OS, UniqueSourceFiles, CoverageFiltersMatchAll()); + renderFileReports(OS, UniqueSourceFiles); } void CoverageReport::renderFileReports(raw_ostream &OS, - ArrayRef<std::string> Files, - const CoverageFilter &Filters) const { + ArrayRef<std::string> Files) const { FileCoverageSummary Totals("TOTAL"); - auto FileReports = - prepareFileReports(Coverage, Totals, Files, Options, Filters); + auto FileReports = prepareFileReports(Coverage, Totals, Files, Options); std::vector<StringRef> Filenames; for (const FileCoverageSummary &FCS : FileReports) diff --git a/tools/llvm-cov/CoverageReport.h b/tools/llvm-cov/CoverageReport.h index d78f2e4c2bd..242dc7fe7ba 100644 --- a/tools/llvm-cov/CoverageReport.h +++ b/tools/llvm-cov/CoverageReport.h @@ -14,7 +14,6 @@ #ifndef LLVM_COV_COVERAGEREPORT_H #define LLVM_COV_COVERAGEREPORT_H -#include "CoverageFilters.h" #include "CoverageSummaryInfo.h" #include "CoverageViewOptions.h" @@ -41,16 +40,13 @@ public: static std::vector<FileCoverageSummary> prepareFileReports(const coverage::CoverageMapping &Coverage, FileCoverageSummary &Totals, ArrayRef<std::string> Files, - const CoverageViewOptions &Options, - const CoverageFilter &Filters = CoverageFiltersMatchAll()); + const CoverageViewOptions &Options); /// Render file reports for every unique file in the coverage mapping. void renderFileReports(raw_ostream &OS) const; - /// Render file reports for the files specified in \p Files and the functions - /// in \p Filters. - void renderFileReports(raw_ostream &OS, ArrayRef<std::string> Files, - const CoverageFilter &Filters) const; + /// Render file reports for the files specified in \p Files. + void renderFileReports(raw_ostream &OS, ArrayRef<std::string> Files) const; }; } // end namespace llvm diff --git a/tools/llvm-cov/SourceCoverageView.cpp b/tools/llvm-cov/SourceCoverageView.cpp index f944dc62b9e..dc00b802e38 100644 --- a/tools/llvm-cov/SourceCoverageView.cpp +++ b/tools/llvm-cov/SourceCoverageView.cpp @@ -164,9 +164,8 @@ void SourceCoverageView::addInstantiation( } void SourceCoverageView::print(raw_ostream &OS, bool WholeFile, - bool ShowSourceName, bool ShowTitle, - unsigned ViewDepth) { - if (ShowTitle) + bool ShowSourceName, unsigned ViewDepth) { + if (WholeFile && getOptions().hasOutputDirectory()) renderTitle(OS, "Coverage Report"); renderViewHeader(OS); diff --git a/tools/llvm-cov/SourceCoverageView.h b/tools/llvm-cov/SourceCoverageView.h index 7c7e8781364..72d6866ed7d 100644 --- a/tools/llvm-cov/SourceCoverageView.h +++ b/tools/llvm-cov/SourceCoverageView.h @@ -22,7 +22,6 @@ namespace llvm { -class CoverageFilter; class SourceCoverageView; /// \brief A view that represents a macro or include expansion. @@ -112,8 +111,7 @@ public: /// \brief Create an index which lists reports for the given source files. virtual Error createIndexFile(ArrayRef<std::string> SourceFiles, - const coverage::CoverageMapping &Coverage, - const CoverageFilter &Filters) = 0; + const coverage::CoverageMapping &Coverage) = 0; /// @} }; @@ -260,7 +258,7 @@ public: /// \brief Print the code coverage information for a specific portion of a /// source file to the output stream. void print(raw_ostream &OS, bool WholeFile, bool ShowSourceName, - bool ShowTitle, unsigned ViewDepth = 0); + unsigned ViewDepth = 0); }; } // namespace llvm diff --git a/tools/llvm-cov/SourceCoverageViewHTML.cpp b/tools/llvm-cov/SourceCoverageViewHTML.cpp index a031f184825..300a0162bd1 100644 --- a/tools/llvm-cov/SourceCoverageViewHTML.cpp +++ b/tools/llvm-cov/SourceCoverageViewHTML.cpp @@ -366,7 +366,7 @@ void CoveragePrinterHTML::emitFileSummary(raw_ostream &OS, StringRef SF, Error CoveragePrinterHTML::createIndexFile( ArrayRef<std::string> SourceFiles, - const coverage::CoverageMapping &Coverage, const CoverageFilter &Filters) { + const coverage::CoverageMapping &Coverage) { // Emit the default stylesheet. auto CSSOrErr = createOutputStream("style", "css", /*InToplevel=*/true); if (Error E = CSSOrErr.takeError()) @@ -404,8 +404,8 @@ Error CoveragePrinterHTML::createIndexFile( OSRef << BeginCenteredDiv << BeginTable; emitColumnLabelsForIndex(OSRef, Opts); FileCoverageSummary Totals("TOTALS"); - auto FileReports = CoverageReport::prepareFileReports( - Coverage, Totals, SourceFiles, Opts, Filters); + auto FileReports = + CoverageReport::prepareFileReports(Coverage, Totals, SourceFiles, Opts); bool EmptyFiles = false; for (unsigned I = 0, E = FileReports.size(); I < E; ++I) { if (FileReports[I].FunctionCoverage.getNumFunctions()) @@ -620,7 +620,7 @@ void SourceCoverageViewHTML::renderExpansionView(raw_ostream &OS, unsigned ViewDepth) { OS << BeginExpansionDiv; ESV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/false, - /*ShowTitle=*/false, ViewDepth + 1); + ViewDepth + 1); OS << EndExpansionDiv; } @@ -636,7 +636,7 @@ void SourceCoverageViewHTML::renderInstantiationView(raw_ostream &OS, << EndSourceNameDiv; else ISV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/true, - /*ShowTitle=*/false, ViewDepth); + ViewDepth); OS << EndExpansionDiv; } diff --git a/tools/llvm-cov/SourceCoverageViewHTML.h b/tools/llvm-cov/SourceCoverageViewHTML.h index e11111a5ad2..8cb73567a2e 100644 --- a/tools/llvm-cov/SourceCoverageViewHTML.h +++ b/tools/llvm-cov/SourceCoverageViewHTML.h @@ -29,8 +29,7 @@ public: void closeViewFile(OwnedStream OS) override; Error createIndexFile(ArrayRef<std::string> SourceFiles, - const coverage::CoverageMapping &Coverage, - const CoverageFilter &Filters) override; + const coverage::CoverageMapping &Coverage) override; CoveragePrinterHTML(const CoverageViewOptions &Opts) : CoveragePrinter(Opts) {} diff --git a/tools/llvm-cov/SourceCoverageViewText.cpp b/tools/llvm-cov/SourceCoverageViewText.cpp index b2902df185d..a78c0575cdc 100644 --- a/tools/llvm-cov/SourceCoverageViewText.cpp +++ b/tools/llvm-cov/SourceCoverageViewText.cpp @@ -30,7 +30,7 @@ void CoveragePrinterText::closeViewFile(OwnedStream OS) { Error CoveragePrinterText::createIndexFile( ArrayRef<std::string> SourceFiles, - const coverage::CoverageMapping &Coverage, const CoverageFilter &Filters) { + const coverage::CoverageMapping &Coverage) { auto OSOrErr = createOutputStream("index", "txt", /*InToplevel=*/true); if (Error E = OSOrErr.takeError()) return E; @@ -38,7 +38,7 @@ Error CoveragePrinterText::createIndexFile( raw_ostream &OSRef = *OS.get(); CoverageReport Report(Opts, Coverage); - Report.renderFileReports(OSRef, SourceFiles, Filters); + Report.renderFileReports(OSRef, SourceFiles); Opts.colored_ostream(OSRef, raw_ostream::CYAN) << "\n" << Opts.getLLVMVersionString(); @@ -210,7 +210,7 @@ void SourceCoverageViewText::renderExpansionView(raw_ostream &OS, errs() << "Expansion at line " << ESV.getLine() << ", " << ESV.getStartCol() << " -> " << ESV.getEndCol() << '\n'; ESV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/false, - /*ShowTitle=*/false, ViewDepth + 1); + ViewDepth + 1); } void SourceCoverageViewText::renderInstantiationView(raw_ostream &OS, @@ -223,7 +223,7 @@ void SourceCoverageViewText::renderInstantiationView(raw_ostream &OS, << "Unexecuted instantiation: " << ISV.FunctionName << "\n"; else ISV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/true, - /*ShowTitle=*/false, ViewDepth); + ViewDepth); } void SourceCoverageViewText::renderTitle(raw_ostream &OS, StringRef Title) { diff --git a/tools/llvm-cov/SourceCoverageViewText.h b/tools/llvm-cov/SourceCoverageViewText.h index 3a04070d1ac..c3f20de9297 100644 --- a/tools/llvm-cov/SourceCoverageViewText.h +++ b/tools/llvm-cov/SourceCoverageViewText.h @@ -27,8 +27,7 @@ public: void closeViewFile(OwnedStream OS) override; Error createIndexFile(ArrayRef<std::string> SourceFiles, - const coverage::CoverageMapping &Coverage, - const CoverageFilter &Filters) override; + const coverage::CoverageMapping &Coverage) override; CoveragePrinterText(const CoverageViewOptions &Opts) : CoveragePrinter(Opts) {} |