diff options
author | Kristof Umann <kristof.umann@ericsson.com> | 2019-05-23 22:07:16 +0000 |
---|---|---|
committer | Kristof Umann <kristof.umann@ericsson.com> | 2019-05-23 22:07:16 +0000 |
commit | e9bb934200794a73b20a28a5761031d7aefbbbb2 (patch) | |
tree | ddfe82279a465efab924c716bc45f17ad6d40393 /utils | |
parent | eb1a2354d805e932fc261929406a2a191c3464df (diff) | |
download | clang-e9bb934200794a73b20a28a5761031d7aefbbbb2.tar.gz |
[analyzer] Hide developer-only checker/package options by default
These options are now only visible under
-analyzer-checker-option-help-developer.
Differential Revision: https://reviews.llvm.org/D61839
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@361561 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/ClangSACheckersEmitter.cpp | 69 |
1 files changed, 37 insertions, 32 deletions
diff --git a/utils/TableGen/ClangSACheckersEmitter.cpp b/utils/TableGen/ClangSACheckersEmitter.cpp index 428a5c8127..7c1827ec2e 100644 --- a/utils/TableGen/ClangSACheckersEmitter.cpp +++ b/utils/TableGen/ClangSACheckersEmitter.cpp @@ -113,6 +113,7 @@ static std::string getCheckerOptionType(const Record &R) { static bool isHidden(const Record *R) { if (R->getValueAsBit("Hidden")) return true; + // Not declared as hidden, check the parent package if it is hidden. if (DefInit *DI = dyn_cast<DefInit>(R->getValueInit("ParentPackage"))) return isHidden(DI->getDef()); @@ -121,21 +122,38 @@ static bool isHidden(const Record *R) { } static void printChecker(llvm::raw_ostream &OS, const Record &R) { - OS << "CHECKER(" << "\""; - OS.write_escaped(getCheckerFullName(&R)) << "\", "; - OS << R.getName() << ", "; - OS << "\""; - OS.write_escaped(getStringValue(R, "HelpText")) << "\", "; - OS << "\""; - OS.write_escaped(getCheckerDocs(R)); - OS << "\", "; - - if (!isHidden(&R)) - OS << "false"; - else - OS << "true"; + OS << "CHECKER(" << "\""; + OS.write_escaped(getCheckerFullName(&R)) << "\", "; + OS << R.getName() << ", "; + OS << "\""; + OS.write_escaped(getStringValue(R, "HelpText")) << "\", "; + OS << "\""; + OS.write_escaped(getCheckerDocs(R)); + OS << "\", "; + + if (!isHidden(&R)) + OS << "false"; + else + OS << "true"; + + OS << ")\n"; +} + +static void printOption(llvm::raw_ostream &OS, StringRef FullName, + const Record &R) { + OS << "\""; + OS.write_escaped(getCheckerOptionType(R)) << "\", \""; + OS.write_escaped(FullName) << "\", "; + OS << '\"' << getStringValue(R, "CmdFlag") << "\", "; + OS << '\"'; + OS.write_escaped(getStringValue(R, "Desc")) << "\", "; + OS << '\"'; + OS.write_escaped(getStringValue(R, "DefaultVal")) << "\", "; - OS << ")\n"; + if (!R.getValueAsBit("Hidden")) + OS << "false"; + else + OS << "true"; } namespace clang { @@ -196,14 +214,8 @@ void EmitClangSACheckers(RecordKeeper &Records, raw_ostream &OS) { std::vector<Record *> PackageOptions = Package ->getValueAsListOfDefs("PackageOptions"); for (Record *PackageOpt : PackageOptions) { - OS << "PACKAGE_OPTION(\""; - OS.write_escaped(getCheckerOptionType(*PackageOpt)) << "\", \""; - OS.write_escaped(getPackageFullName(Package)) << "\", "; - OS << '\"' << getStringValue(*PackageOpt, "CmdFlag") << "\", "; - OS << '\"'; - OS.write_escaped(getStringValue(*PackageOpt, "Desc")) << "\", "; - OS << '\"'; - OS.write_escaped(getStringValue(*PackageOpt, "DefaultVal")) << "\""; + OS << "PACKAGE_OPTION("; + printOption(OS, getPackageFullName(Package), *PackageOpt); OS << ")\n"; } } @@ -277,16 +289,9 @@ void EmitClangSACheckers(RecordKeeper &Records, raw_ostream &OS) { std::vector<Record *> CheckerOptions = Checker ->getValueAsListOfDefs("CheckerOptions"); for (Record *CheckerOpt : CheckerOptions) { - OS << "CHECKER_OPTION(\""; - OS << getCheckerOptionType(*CheckerOpt) << "\", \""; - OS.write_escaped(getCheckerFullName(Checker)) << "\", "; - OS << '\"' << getStringValue(*CheckerOpt, "CmdFlag") << "\", "; - OS << '\"'; - OS.write_escaped(getStringValue(*CheckerOpt, "Desc")) << "\", "; - OS << '\"'; - OS.write_escaped(getStringValue(*CheckerOpt, "DefaultVal")) << "\""; - OS << ")"; - OS << '\n'; + OS << "CHECKER_OPTION("; + printOption(OS, getCheckerFullName(Checker), *CheckerOpt); + OS << ")\n"; } } OS << "#endif // GET_CHECKER_OPTIONS\n" |