summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorKristof Umann <kristof.umann@ericsson.com>2019-05-23 22:07:16 +0000
committerKristof Umann <kristof.umann@ericsson.com>2019-05-23 22:07:16 +0000
commite9bb934200794a73b20a28a5761031d7aefbbbb2 (patch)
treeddfe82279a465efab924c716bc45f17ad6d40393 /utils
parenteb1a2354d805e932fc261929406a2a191c3464df (diff)
downloadclang-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.cpp69
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"