diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-02-24 21:42:52 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-02-24 21:42:52 +0000 |
| commit | 51695bbb0aba88842ac943594463fd526547c0c2 (patch) | |
| tree | 2fb8fd726c6b8b1025e6461073650df3bb5ebc27 | |
| parent | 8b089064113be6498e2c26e2b8c4feb67a671952 (diff) | |
| download | bcm5719-llvm-51695bbb0aba88842ac943594463fd526547c0c2.tar.gz bcm5719-llvm-51695bbb0aba88842ac943594463fd526547c0c2.zip | |
[analyzer] Allow a checker to be hidden even if its package is hidden & enabled.
For example, if 'core.experimental.UnreachableCode' is hidden, it should not be enabled with 'core.experimental'.
Note that this requires llvm commit r126436.
llvm-svn: 126439
| -rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/Checkers.td | 3 | ||||
| -rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/ClangSACheckerProvider.cpp | 7 |
2 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/Checkers.td b/clang/lib/StaticAnalyzer/Checkers/Checkers.td index 0320d28b9a7..9bcd6c668dc 100644 --- a/clang/lib/StaticAnalyzer/Checkers/Checkers.td +++ b/clang/lib/StaticAnalyzer/Checkers/Checkers.td @@ -137,7 +137,8 @@ def CStringChecker : Checker<"CString">, def UnreachableCodeChecker : Checker<"UnreachableCode">, InPackage<CoreExperimental>, HelpText<"Check unreachable code">, - DescFile<"UnreachableCodeChecker.cpp">; + DescFile<"UnreachableCodeChecker.cpp">, + Hidden; // Must be specified explicitly in order to run. def IdempotentOperationChecker : Checker<"IdempotentOps">, InPackage<CoreExperimental>, diff --git a/clang/lib/StaticAnalyzer/Checkers/ClangSACheckerProvider.cpp b/clang/lib/StaticAnalyzer/Checkers/ClangSACheckerProvider.cpp index 94f200f3e89..aefaf548020 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ClangSACheckerProvider.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ClangSACheckerProvider.cpp @@ -104,9 +104,10 @@ static void collectCheckers(const CheckNameOption *checkName, // Enable/disable all subgroups along with this one. if (const short *subGroups = checkName->SubGroups) { - for (; *subGroups != -1; ++subGroups) - collectCheckers(&CheckNameTable[*subGroups], enable, checkers, - collectHidden && checkName->Hidden); + for (; *subGroups != -1; ++subGroups) { + const CheckNameOption *sub = &CheckNameTable[*subGroups]; + collectCheckers(sub, enable, checkers, collectHidden && !sub->Hidden); + } } } |

