xref: /llvm-project/llvm/tools/sancov/Opts.td (revision a8016e296e6ec161897e7421c5efbc25a6aa3a9f)
1include "llvm/Option/OptParser.td"
2
3class F<string name, string help> : Flag<["-", "--"], name>, HelpText<help>;
4
5multiclass B<string name, string help1, string help2> {
6  def NAME: Flag<["-", "--"], name>, HelpText<help1>;
7  def no_ # NAME: Flag<["-", "--"], "no-" # name>, HelpText<help2>;
8}
9
10multiclass Eq<string name, string help> {
11  def NAME #_EQ : Joined<["-", "--"], name #"=">,
12                  HelpText<help>;
13  def : Separate<["-", "--"], name>, Alias<!cast<Joined>(NAME #_EQ)>;
14}
15
16def generic_grp : OptionGroup<"Genric Options">, HelpText<"Generic Options">;
17def help : F<"help", "Display this help">, Group<generic_grp>;
18def : Flag<["-"], "h">, Alias<help>, HelpText<"Alias for --help">, Group<generic_grp>;
19def version : F<"version", "Display the version">, Group<generic_grp>;
20def : Flag<["-"], "v">, Alias<version>, HelpText<"Alias for --version">, Group<generic_grp>;
21
22def action_grp : OptionGroup<"Action">, HelpText<"Action (required)">;
23def print : F<"print", "Print coverage addresses">,
24  Group<action_grp>;
25def printCoveragePcs : F<"print-coverage-pcs", "Print coverage instrumentation points addresses.">,
26  Group<action_grp>;
27def coveredFunctions : F<"covered-functions", "Print all covered funcions.">,
28  Group<action_grp>;
29def notCoveredFunctions : F<"not-covered-functions", "Print all not covered funcions.">,
30  Group<action_grp>;
31def printCoverageStats : F<"print-coverage-stats", "Print coverage statistics.">,
32  Group<action_grp>;
33def htmlReport : F<"html-report", "REMOVED. Use -symbolize & coverage-report-server.py.">,
34  Group<action_grp>;
35def symbolize : F<"symbolize", "Produces a symbolized JSON report from binary report.">,
36  Group<action_grp>;
37def merge : F<"merge", "Merges reports.">,
38  Group<action_grp>;
39
40defm demangle : B<"demangle", "Demangle function names", "Do not demangle function names">;
41defm skipDeadFiles : B<"skip-dead-files", "Do not list dead source files in reports",
42                                          "List dead source files in reports">;
43defm useDefaultIgnoreList :
44  B<"use_default_ignorelist", "Use the default ignore list", "Don't use the default ignore list">,
45  Flags<[HelpHidden]>;
46
47// Compatibility aliases
48def : Flag<["-"], "demangle=0">, Alias<no_demangle>, HelpText<"Alias for --no-demangle">;
49def : Flag<["-"], "skip-dead-files=0">, Alias<no_skipDeadFiles>, HelpText<"Alias for --no-skip-dead-files">;
50def : Flag<["-"], "use_default_ignorelist=0">, Alias<no_useDefaultIgnoreList>, HelpText<"Alias for --no-use_default_ignore_list">;
51
52defm stripPathPrefix
53    : Eq<"strip_path_prefix", "Strip this prefix from files paths in reports">,
54      MetaVarName<"<string>">;
55
56defm ignorelist
57    : Eq<"ignorelist", "Ignorelist file (sanitizer ignorelist format)">,
58      MetaVarName<"<string>">;
59