Home | History | Annotate | Line # | Download | only in llvm-cov
      1 //===- CoverageViewOptions.h - Code coverage display options -------------===//
      2 //
      3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      4 // See https://llvm.org/LICENSE.txt for license information.
      5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      6 //
      7 //===----------------------------------------------------------------------===//
      8 
      9 #ifndef LLVM_COV_COVERAGEVIEWOPTIONS_H
     10 #define LLVM_COV_COVERAGEVIEWOPTIONS_H
     11 
     12 #include "llvm/Config/llvm-config.h"
     13 #include "RenderingSupport.h"
     14 #include <vector>
     15 
     16 namespace llvm {
     17 
     18 /// The options for displaying the code coverage information.
     19 struct CoverageViewOptions {
     20   enum class OutputFormat {
     21     Text,
     22     HTML,
     23     Lcov
     24   };
     25 
     26   enum class BranchOutputType { Count, Percent, Off };
     27 
     28   bool Debug;
     29   bool Colors;
     30   bool ShowLineNumbers;
     31   bool ShowLineStats;
     32   bool ShowRegionMarkers;
     33   bool ShowBranchCounts;
     34   bool ShowBranchPercents;
     35   bool ShowExpandedRegions;
     36   bool ShowFunctionInstantiations;
     37   bool ShowFullFilenames;
     38   bool ShowBranchSummary;
     39   bool ShowRegionSummary;
     40   bool ShowInstantiationSummary;
     41   bool ExportSummaryOnly;
     42   bool SkipExpansions;
     43   bool SkipFunctions;
     44   OutputFormat Format;
     45   BranchOutputType ShowBranches;
     46   std::string ShowOutputDirectory;
     47   std::vector<std::string> DemanglerOpts;
     48   uint32_t TabSize;
     49   std::string ProjectTitle;
     50   std::string CreatedTimeStr;
     51   unsigned NumThreads;
     52   std::string CompilationDirectory;
     53 
     54   /// Change the output's stream color if the colors are enabled.
     55   ColoredRawOstream colored_ostream(raw_ostream &OS,
     56                                     raw_ostream::Colors Color) const {
     57     return llvm::colored_ostream(OS, Color, Colors);
     58   }
     59 
     60   /// Check if an output directory has been specified.
     61   bool hasOutputDirectory() const { return !ShowOutputDirectory.empty(); }
     62 
     63   /// Check if a demangler has been specified.
     64   bool hasDemangler() const { return !DemanglerOpts.empty(); }
     65 
     66   /// Check if a project title has been specified.
     67   bool hasProjectTitle() const { return !ProjectTitle.empty(); }
     68 
     69   /// Check if the created time of the profile data file is available.
     70   bool hasCreatedTime() const { return !CreatedTimeStr.empty(); }
     71 
     72   /// Get the LLVM version string.
     73   std::string getLLVMVersionString() const {
     74     std::string VersionString = "Generated by llvm-cov -- llvm version ";
     75     VersionString += LLVM_VERSION_STRING;
     76     return VersionString;
     77   }
     78 };
     79 }
     80 
     81 #endif // LLVM_COV_COVERAGEVIEWOPTIONS_H
     82