[llvm] 8d24d72 - Revert "[llvm-cov] Add option to whitelist filenames"

Vlad Tsyrklevich via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 29 22:39:45 PDT 2019


Author: Vlad Tsyrklevich
Date: 2019-10-29T22:38:38-07:00
New Revision: 8d24d72f7f8b7a111f96510fc6d62b05bfb7dbec

URL: https://github.com/llvm/llvm-project/commit/8d24d72f7f8b7a111f96510fc6d62b05bfb7dbec
DIFF: https://github.com/llvm/llvm-project/commit/8d24d72f7f8b7a111f96510fc6d62b05bfb7dbec.diff

LOG: Revert "[llvm-cov] Add option to whitelist filenames"

This reverts commit bfed824b57d14e2ba98ddbaf1a1410cf04a3e279, the
included test fails on many bots including the sanitier bots, e.g. in
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/36140

Added: 
    

Modified: 
    llvm/docs/CommandGuide/llvm-cov.rst
    llvm/tools/llvm-cov/CodeCoverage.cpp
    llvm/tools/llvm-cov/CoverageExporter.h
    llvm/tools/llvm-cov/CoverageExporterJson.cpp
    llvm/tools/llvm-cov/CoverageExporterJson.h
    llvm/tools/llvm-cov/CoverageExporterLcov.cpp
    llvm/tools/llvm-cov/CoverageExporterLcov.h
    llvm/tools/llvm-cov/CoverageFilters.cpp
    llvm/tools/llvm-cov/CoverageFilters.h
    llvm/tools/llvm-cov/CoverageReport.cpp
    llvm/tools/llvm-cov/CoverageReport.h

Removed: 
    llvm/test/tools/llvm-cov/whitelist-filename-regex.test


################################################################################
diff  --git a/llvm/docs/CommandGuide/llvm-cov.rst b/llvm/docs/CommandGuide/llvm-cov.rst
index 9bc9f7edae21..08123e8cb788 100644
--- a/llvm/docs/CommandGuide/llvm-cov.rst
+++ b/llvm/docs/CommandGuide/llvm-cov.rst
@@ -259,10 +259,6 @@ OPTIONS
 
  Skip source code files with file paths that match the given regular expression.
 
-.. option:: -whitelist-filename-regex=<PATTERN>
-
- Show code coverage only for files that match the given regular expression.
-
 .. option:: -format=<FORMAT>
 
  Use the specified output format. The supported formats are: "text", "html".

diff  --git a/llvm/test/tools/llvm-cov/whitelist-filename-regex.test b/llvm/test/tools/llvm-cov/whitelist-filename-regex.test
deleted file mode 100644
index 7039fb532f33..000000000000
--- a/llvm/test/tools/llvm-cov/whitelist-filename-regex.test
+++ /dev/null
@@ -1,88 +0,0 @@
-########################
-# Test "report" command.
-########################
-# Only source files
-RUN: llvm-cov report -instr-profile %S/Inputs/sources_specified/main.profdata \
-RUN:   -path-equivalence=/tmp,%S/Inputs -whitelist-filename-regex='.*\.cc$' \
-RUN:   %S/Inputs/sources_specified/main.covmapping \
-RUN:   | FileCheck -check-prefix=REPORT_WHITELIST_SOURCE %s
-
-REPORT_WHITELIST_SOURCE-NOT: {{.*}}dec.h{{.*}}
-REPORT_WHITELIST_SOURCE-NOT: {{.*}}inc.h{{.*}}
-REPORT_WHITELIST_SOURCE-NOT: {{.*}}abs.h{{.*}}
-REPORT_WHITELIST_SOURCE: {{.*}}main.cc{{.*}}
-REPORT_WHITELIST_SOURCE: {{^}}TOTAL 1{{.*}}100.00%{{$}}
-
-# Whitelist all files from "extra" directory.
-RUN: llvm-cov report -instr-profile %S/Inputs/sources_specified/main.profdata \
-RUN:   -path-equivalence=/tmp,%S/Inputs -whitelist-filename-regex='.*extra[/\\].*' \
-RUN:   %S/Inputs/sources_specified/main.covmapping \
-RUN:   | FileCheck -check-prefix=REPORT_WHITELIST_DIR %s
-
-REPORT_WHITELIST_DIR: {{.*}}dec.h{{.*}}
-REPORT_WHITELIST_DIR: {{.*}}inc.h{{.*}}
-REPORT_WHITELIST_DIR-NOT: {{.*}}abs.h{{.*}}
-REPORT_WHITELIST_DIR-NOT: {{.*}}main.cc{{.*}}
-REPORT_WHITELIST_DIR: {{^}}TOTAL 2{{.*}}50.00%{{$}}
-
-# Whitelist ignored files
-RUN: llvm-cov report -instr-profile %S/Inputs/sources_specified/main.profdata \
-RUN:   -path-equivalence=/tmp,%S/Inputs \
-RUN:   -ignore-filename-regex='.*' -whitelist-filename-regex='.*' \
-RUN:   %S/Inputs/sources_specified/main.covmapping \
-RUN:   | FileCheck -check-prefix=REPORT_WHITELIST_IGNORED %s
-
-REPORT_WHITELIST_IGNORED-NOT: {{.*}}dec.h{{.*}}
-REPORT_WHITELIST_IGNORED-NOT: {{.*}}inc.h{{.*}}
-REPORT_WHITELIST_IGNORED-NOT: {{.*}}abs.h{{.*}}
-REPORT_WHITELIST_IGNORED-NOT: {{.*}}main.cc{{.*}}
-REPORT_WHITELIST_IGNORED-NOT: {{^}}TOTAL 0{{.*}}0.00%{{$}}
-
-# Whitelist all files from "extra" directory even when SOURCES specified.
-RUN: llvm-cov report -instr-profile %S/Inputs/sources_specified/main.profdata \
-RUN:   -path-equivalence=/tmp,%S/Inputs -whitelist-filename-regex='.*extra[/\\].*' \
-RUN:   %S/Inputs/sources_specified/main.covmapping \
-RUN:   %S/Inputs/sources_specified/extra %S/Inputs/sources_specified/abs.h \
-RUN:   | FileCheck -check-prefix=REPORT_WHITELIST_DIR_WITH_SOURCES %s
-
-REPORT_WHITELIST_DIR_WITH_SOURCES: {{.*}}dec.h{{.*}}
-REPORT_WHITELIST_DIR_WITH_SOURCES: {{.*}}inc.h{{.*}}
-REPORT_WHITELIST_DIR_WITH_SOURCES-NOT: {{.*}}abs.h{{.*}}
-REPORT_WHITELIST_DIR_WITH_SOURCES-NOT: {{.*}}main.cc{{.*}}
-REPORT_WHITELIST_DIR_WITH_SOURCES: {{^}}TOTAL 2{{.*}}50.00%{{$}}
-
-########################
-# Test "show" command.
-########################
-# Whitelist a couple files
-RUN: llvm-cov show -instr-profile %S/Inputs/sources_specified/main.profdata \
-RUN:   -path-equivalence=/tmp,%S/Inputs \
-RUN:   -whitelist-filename-regex='.*\.cc$' -whitelist-filename-regex='.*abs\.h$' \
-RUN:   %S/Inputs/sources_specified/main.covmapping \
-RUN:   | FileCheck -check-prefix=SHOW_WHITELIST_CC %s
-
-# Order of files may 
diff er, check that there are 3 files and not abs.h.
-SHOW_IGNORE_CC-NOT: {{.*}}main.cc{{.*}}
-
-SHOW_WHITELIST_CC-NOT: {{.*}}dec.h{{.*}}
-SHOW_WHITELIST_CC-NOT: {{.*}}inc.h{{.*}}
-SHOW_WHITELIST_CC: {{.*}}sources_specified{{.*}}
-SHOW_WHITELIST_CC: {{.*}}sources_specified{{.*}}
-
-########################
-# Test "export" command.
-########################
-# Use a temp .json file as output in a single line. Whitelist headers that have
-# an 'a' follow by 2 chars followed by '.h'.
-RUN: llvm-cov export -instr-profile %S/Inputs/sources_specified/main.profdata \
-RUN:   -path-equivalence=/tmp,%S/Inputs -whitelist-filename-regex='.*a..\.h$' \
-RUN:   %S/Inputs/sources_specified/main.covmapping \
-RUN:   > %t.export.json
-
-RUN: FileCheck -check-prefix=NO-EXPORT_WHITELIST_3_SYMBOLS_H %s < %t.export.json
-RUN: FileCheck -check-prefix=EXPORT_WHITELIST_3_SYMBOLS_H %s < %t.export.json
-
-NO-EXPORT_WHITELIST_3_SYMBOLS_H-NOT: {{"filename":"(/|\\\\)tmp(/|\\\\)sources_specified(/|\\\\)inc.h"}}
-NO-EXPORT_WHITELIST_3_SYMBOLS_H-NOT: {{"filename":"(/|\\\\)tmp(/|\\\\)sources_specified(/|\\\\)dec.h"}}
-NO-EXPORT_WHITELIST_3_SYMBOLS_H-NOT: {{"filename":"(/|\\\\)tmp(/|\\\\)sources_specified(/|\\\\)main.cc"}}
-EXPORT_WHITELIST_3_SYMBOLS_H: {{"filename":"(/|\\\\)tmp(/|\\\\)sources_specified(/|\\\\)abs.h"}}

diff  --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp
index 79c58450f0dd..7151cfb032f3 100644
--- a/llvm/tools/llvm-cov/CodeCoverage.cpp
+++ b/llvm/tools/llvm-cov/CodeCoverage.cpp
@@ -126,7 +126,7 @@ class CodeCoverageTool {
   std::vector<StringRef> ObjectFilenames;
   CoverageViewOptions ViewOpts;
   CoverageFiltersMatchAll Filters;
-  FilenameCoverageFilters FilenameFilters;
+  CoverageFilters IgnoreFilenameFilters;
 
   /// The path to the indexed profile.
   std::string PGOFilename;
@@ -190,7 +190,7 @@ void CodeCoverageTool::addCollectedPath(const std::string &Path) {
     return;
   }
   sys::path::remove_dots(EffectivePath, /*remove_dot_dots=*/true);
-  if (FilenameFilters.matchesFilename(EffectivePath))
+  if (!IgnoreFilenameFilters.matchesFilename(EffectivePath))
     SourceFiles.emplace_back(EffectivePath.str());
 }
 
@@ -595,12 +595,6 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) {
                "regular expression"),
       cl::ZeroOrMore, cl::cat(FilteringCategory));
 
-  cl::list<std::string> WhitelistFilenameRegexFilters(
-      "whitelist-filename-regex", cl::Optional,
-      cl::desc("Show code coverage only for file paths that match the given "
-               "regular expression"),
-      cl::ZeroOrMore, cl::cat(FilteringCategory));
-
   cl::list<std::string> IgnoreFilenameRegexFilters(
       "ignore-filename-regex", cl::Optional,
       cl::desc("Skip source code files with file paths that match the given "
@@ -750,11 +744,10 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) {
       Filters.push_back(std::move(StatFilterer));
     }
 
-    // Create the filename filters.
+    // Create the ignore filename filters.
     for (const auto &RE : IgnoreFilenameRegexFilters)
-      FilenameFilters.blacklist(std::make_unique<NameRegexCoverageFilter>(RE));
-    for (const auto &RE : WhitelistFilenameRegexFilters)
-      FilenameFilters.whitelist(std::make_unique<NameRegexCoverageFilter>(RE));
+      IgnoreFilenameFilters.push_back(
+          std::make_unique<NameRegexCoverageFilter>(RE));
 
     if (!Arches.empty()) {
       for (const std::string &Arch : Arches) {
@@ -770,7 +763,7 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) {
       }
     }
 
-    // FilenameFilters are applied even when InputSourceFiles specified.
+    // IgnoreFilenameFilters are applied even when InputSourceFiles specified.
     for (const std::string &File : InputSourceFiles)
       collectPaths(File);
 
@@ -891,7 +884,7 @@ int CodeCoverageTool::doShow(int argc, const char **argv,
   if (SourceFiles.empty())
     // Get the source files from the function coverage mapping.
     for (StringRef Filename : Coverage->getUniqueSourceFiles()) {
-      if (FilenameFilters.matchesFilename(Filename))
+      if (!IgnoreFilenameFilters.matchesFilename(Filename))
         SourceFiles.push_back(Filename);
     }
 
@@ -995,7 +988,7 @@ int CodeCoverageTool::doReport(int argc, const char **argv,
   CoverageReport Report(ViewOpts, *Coverage.get());
   if (!ShowFunctionSummaries) {
     if (SourceFiles.empty())
-      Report.renderFileReports(llvm::outs(), FilenameFilters);
+      Report.renderFileReports(llvm::outs(), IgnoreFilenameFilters);
     else
       Report.renderFileReports(llvm::outs(), SourceFiles);
   } else {
@@ -1061,7 +1054,7 @@ int CodeCoverageTool::doExport(int argc, const char **argv,
   }
 
   if (SourceFiles.empty())
-    Exporter->renderRoot(FilenameFilters);
+    Exporter->renderRoot(IgnoreFilenameFilters);
   else
     Exporter->renderRoot(SourceFiles);
 

diff  --git a/llvm/tools/llvm-cov/CoverageExporter.h b/llvm/tools/llvm-cov/CoverageExporter.h
index 03a7447e934c..751e55dc0916 100644
--- a/llvm/tools/llvm-cov/CoverageExporter.h
+++ b/llvm/tools/llvm-cov/CoverageExporter.h
@@ -40,7 +40,7 @@ class CoverageExporter {
   virtual ~CoverageExporter(){};
 
   /// Render the CoverageMapping object.
-  virtual void renderRoot(const FilenameCoverageFilters &FilenameFilters) = 0;
+  virtual void renderRoot(const CoverageFilters &IgnoreFilters) = 0;
 
   /// Render the CoverageMapping object for specified source files.
   virtual void renderRoot(ArrayRef<std::string> SourceFiles) = 0;

diff  --git a/llvm/tools/llvm-cov/CoverageExporterJson.cpp b/llvm/tools/llvm-cov/CoverageExporterJson.cpp
index 204571b7ee8f..181d428ed9d8 100644
--- a/llvm/tools/llvm-cov/CoverageExporterJson.cpp
+++ b/llvm/tools/llvm-cov/CoverageExporterJson.cpp
@@ -190,11 +190,10 @@ json::Array renderFunctions(
 
 } // end anonymous namespace
 
-void CoverageExporterJson::renderRoot(
-    const FilenameCoverageFilters &FilenameFilters) {
+void CoverageExporterJson::renderRoot(const CoverageFilters &IgnoreFilters) {
   std::vector<std::string> SourceFiles;
   for (StringRef SF : Coverage.getUniqueSourceFiles()) {
-    if (FilenameFilters.matchesFilename(SF))
+    if (!IgnoreFilters.matchesFilename(SF))
       SourceFiles.emplace_back(SF);
   }
   renderRoot(SourceFiles);

diff  --git a/llvm/tools/llvm-cov/CoverageExporterJson.h b/llvm/tools/llvm-cov/CoverageExporterJson.h
index c0f4f5b4beb4..c19475005552 100644
--- a/llvm/tools/llvm-cov/CoverageExporterJson.h
+++ b/llvm/tools/llvm-cov/CoverageExporterJson.h
@@ -24,7 +24,7 @@ class CoverageExporterJson : public CoverageExporter {
       : CoverageExporter(CoverageMapping, Options, OS) {}
 
   /// Render the CoverageMapping object.
-  void renderRoot(const FilenameCoverageFilters &FilenameFilters) override;
+  void renderRoot(const CoverageFilters &IgnoreFilters) override;
 
   /// Render the CoverageMapping object for specified source files.
   void renderRoot(ArrayRef<std::string> SourceFiles) override;

diff  --git a/llvm/tools/llvm-cov/CoverageExporterLcov.cpp b/llvm/tools/llvm-cov/CoverageExporterLcov.cpp
index bc9dce852958..d9b0c3b0d7a8 100644
--- a/llvm/tools/llvm-cov/CoverageExporterLcov.cpp
+++ b/llvm/tools/llvm-cov/CoverageExporterLcov.cpp
@@ -106,11 +106,10 @@ void renderFiles(raw_ostream &OS, const coverage::CoverageMapping &Coverage,
 
 } // end anonymous namespace
 
-void CoverageExporterLcov::renderRoot(
-    const FilenameCoverageFilters &FilenameFilters) {
+void CoverageExporterLcov::renderRoot(const CoverageFilters &IgnoreFilters) {
   std::vector<std::string> SourceFiles;
   for (StringRef SF : Coverage.getUniqueSourceFiles()) {
-    if (FilenameFilters.matchesFilename(SF))
+    if (!IgnoreFilters.matchesFilename(SF))
       SourceFiles.emplace_back(SF);
   }
   renderRoot(SourceFiles);

diff  --git a/llvm/tools/llvm-cov/CoverageExporterLcov.h b/llvm/tools/llvm-cov/CoverageExporterLcov.h
index 0ffeb1111b8b..e8a260bf4937 100644
--- a/llvm/tools/llvm-cov/CoverageExporterLcov.h
+++ b/llvm/tools/llvm-cov/CoverageExporterLcov.h
@@ -24,7 +24,7 @@ class CoverageExporterLcov : public CoverageExporter {
       : CoverageExporter(CoverageMapping, Options, OS) {}
 
   /// Render the CoverageMapping object.
-  void renderRoot(const FilenameCoverageFilters &FilenameFilters) override;
+  void renderRoot(const CoverageFilters &IgnoreFilters) override;
 
   /// Render the CoverageMapping object for specified source files.
   void renderRoot(ArrayRef<std::string> SourceFiles) override;

diff  --git a/llvm/tools/llvm-cov/CoverageFilters.cpp b/llvm/tools/llvm-cov/CoverageFilters.cpp
index 57d8d5e5be28..ca241e386e87 100644
--- a/llvm/tools/llvm-cov/CoverageFilters.cpp
+++ b/llvm/tools/llvm-cov/CoverageFilters.cpp
@@ -83,20 +83,3 @@ bool CoverageFiltersMatchAll::matches(
   }
   return true;
 }
-
-bool FilenameCoverageFilters::matchesFilename(StringRef Filename) const {
-  if (!Whitelist.empty() && !Whitelist.matchesFilename(Filename)) {
-    return false;
-  }
-  return !Blacklist.matchesFilename(Filename);
-}
-
-void FilenameCoverageFilters::whitelist(
-    std::unique_ptr<CoverageFilter> Filter) {
-  Whitelist.push_back(std::move(Filter));
-}
-
-void FilenameCoverageFilters::blacklist(
-    std::unique_ptr<CoverageFilter> Filter) {
-  Blacklist.push_back(std::move(Filter));
-}

diff  --git a/llvm/tools/llvm-cov/CoverageFilters.h b/llvm/tools/llvm-cov/CoverageFilters.h
index 26f8fcc0a0da..ce56e1607111 100644
--- a/llvm/tools/llvm-cov/CoverageFilters.h
+++ b/llvm/tools/llvm-cov/CoverageFilters.h
@@ -152,22 +152,6 @@ class CoverageFiltersMatchAll : public CoverageFilters {
                const coverage::FunctionRecord &Function) const override;
 };
 
-/// A collection of filters.
-/// Matches filenames that are whitelisted and not blacklisted.
-class FilenameCoverageFilters : public CoverageFilter {
-protected:
-  CoverageFilters Whitelist;
-  CoverageFilters Blacklist;
-
-public:
-
-  void whitelist(std::unique_ptr<CoverageFilter> Filter);
-  void blacklist(std::unique_ptr<CoverageFilter> Filter);
-
-  bool matchesFilename(StringRef Filename) const override;
-};
-
-
 } // namespace llvm
 
 #endif // LLVM_COV_COVERAGEFILTERS_H

diff  --git a/llvm/tools/llvm-cov/CoverageReport.cpp b/llvm/tools/llvm-cov/CoverageReport.cpp
index 805e465f99c1..82259542c597 100644
--- a/llvm/tools/llvm-cov/CoverageReport.cpp
+++ b/llvm/tools/llvm-cov/CoverageReport.cpp
@@ -379,11 +379,11 @@ std::vector<FileCoverageSummary> CoverageReport::prepareFileReports(
 }
 
 void CoverageReport::renderFileReports(
-    raw_ostream &OS, const FilenameCoverageFilters &FilenameFilters) const {
+    raw_ostream &OS, const CoverageFilters &IgnoreFilenameFilters) const {
   std::vector<std::string> UniqueSourceFiles;
   for (StringRef SF : Coverage.getUniqueSourceFiles()) {
-    // Apply source files filters.
-    if (FilenameFilters.matchesFilename(SF))
+    // Apply ignore source files filters.
+    if (!IgnoreFilenameFilters.matchesFilename(SF))
       UniqueSourceFiles.emplace_back(SF.str());
   }
   renderFileReports(OS, UniqueSourceFiles);

diff  --git a/llvm/tools/llvm-cov/CoverageReport.h b/llvm/tools/llvm-cov/CoverageReport.h
index 7290586f0a05..f9a092f510b5 100644
--- a/llvm/tools/llvm-cov/CoverageReport.h
+++ b/llvm/tools/llvm-cov/CoverageReport.h
@@ -53,7 +53,7 @@ class CoverageReport {
 
   /// Render file reports for every unique file in the coverage mapping.
   void renderFileReports(raw_ostream &OS,
-                         const FilenameCoverageFilters &FilenameFilters) const;
+                         const CoverageFilters &IgnoreFilenameFilters) const;
 
   /// Render file reports for the files specified in \p Files.
   void renderFileReports(raw_ostream &OS, ArrayRef<std::string> Files) const;


        


More information about the llvm-commits mailing list