xref: /llvm-project/llvm/tools/llvm-cov/CoverageViewOptions.h (revision 223521b13e7465bc177f43e22de526b777d6ff74)
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 "RenderingSupport.h"
13 #include "llvm/Config/llvm-config.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 ShowMCDC;
34   bool ShowBranchCounts;
35   bool ShowBranchPercents;
36   bool ShowExpandedRegions;
37   bool ShowFunctionInstantiations;
38   bool ShowFullFilenames;
39   bool ShowBranchSummary;
40   bool ShowMCDCSummary;
41   bool ShowRegionSummary;
42   bool ShowInstantiationSummary;
43   bool ShowDirectoryCoverage;
44   bool ExportSummaryOnly;
45   bool SkipExpansions;
46   bool SkipFunctions;
47   bool SkipBranches;
48   bool BinaryCounters;
49   OutputFormat Format;
50   BranchOutputType ShowBranches;
51   std::string ShowOutputDirectory;
52   std::vector<std::string> DemanglerOpts;
53   uint32_t TabSize;
54   std::string ProjectTitle;
55   std::string CreatedTimeStr;
56   unsigned NumThreads;
57   std::string CompilationDirectory;
58   float HighCovWatermark;
59   float LowCovWatermark;
60 
61   /// Change the output's stream color if the colors are enabled.
62   ColoredRawOstream colored_ostream(raw_ostream &OS,
63                                     raw_ostream::Colors Color) const {
64     return llvm::colored_ostream(OS, Color, Colors);
65   }
66 
67   /// Check if an output directory has been specified.
68   bool hasOutputDirectory() const { return !ShowOutputDirectory.empty(); }
69 
70   /// Check if a demangler has been specified.
71   bool hasDemangler() const { return !DemanglerOpts.empty(); }
72 
73   /// Check if a project title has been specified.
74   bool hasProjectTitle() const { return !ProjectTitle.empty(); }
75 
76   /// Check if the created time of the profile data file is available.
77   bool hasCreatedTime() const { return !CreatedTimeStr.empty(); }
78 
79   /// Get the LLVM version string.
80   std::string getLLVMVersionString() const {
81     std::string VersionString = "Generated by llvm-cov -- llvm version ";
82     VersionString += LLVM_VERSION_STRING;
83     return VersionString;
84   }
85 };
86 }
87 
88 #endif // LLVM_COV_COVERAGEVIEWOPTIONS_H
89