diff options
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc')
| -rw-r--r-- | clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp | 20 | ||||
| -rw-r--r-- | clang-tools-extra/clang-tidy/misc/SuspiciousStringCompareCheck.cpp | 25 |
2 files changed, 11 insertions, 34 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp b/clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp index 4b7eaed3612..d9040ad0ed7 100644 --- a/clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #include "DanglingHandleCheck.h" +#include "../utils/OptionsUtils.h" #include "clang/AST/ASTContext.h" #include "clang/ASTMatchers/ASTMatchFinder.h" @@ -19,20 +20,6 @@ namespace misc { namespace { -static const char HandleClassesDelimiter[] = ";"; - -std::vector<std::string> parseClasses(StringRef Option) { - SmallVector<StringRef, 4> Classes; - Option.split(Classes, HandleClassesDelimiter); - std::vector<std::string> Result; - for (StringRef &Class : Classes) { - Class = Class.trim(); - if (!Class.empty()) - Result.push_back(Class); - } - return Result; -} - ast_matchers::internal::BindableMatcher<Stmt> handleFrom(ast_matchers::internal::Matcher<RecordDecl> IsAHandle, ast_matchers::internal::Matcher<Expr> Arg) { @@ -97,7 +84,7 @@ makeContainerMatcher(ast_matchers::internal::Matcher<RecordDecl> IsAHandle) { DanglingHandleCheck::DanglingHandleCheck(StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), - HandleClasses(parseClasses(Options.get( + HandleClasses(utils::options::parseStringList(Options.get( "HandleClasses", "std::basic_string_view;std::experimental::basic_string_view"))), IsAHandle(cxxRecordDecl(hasAnyName(std::vector<StringRef>( @@ -106,8 +93,7 @@ DanglingHandleCheck::DanglingHandleCheck(StringRef Name, void DanglingHandleCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "HandleClasses", - llvm::join(HandleClasses.begin(), HandleClasses.end(), - HandleClassesDelimiter)); + utils::options::serializeStringList(HandleClasses)); } void DanglingHandleCheck::registerMatchersForVariables(MatchFinder *Finder) { diff --git a/clang-tools-extra/clang-tidy/misc/SuspiciousStringCompareCheck.cpp b/clang-tools-extra/clang-tidy/misc/SuspiciousStringCompareCheck.cpp index 35234faf36b..f364d118095 100644 --- a/clang-tools-extra/clang-tidy/misc/SuspiciousStringCompareCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/SuspiciousStringCompareCheck.cpp @@ -8,10 +8,11 @@ //===----------------------------------------------------------------------===// #include "SuspiciousStringCompareCheck.h" +#include "../utils/Matchers.h" +#include "../utils/OptionsUtils.h" #include "clang/AST/ASTContext.h" #include "clang/ASTMatchers/ASTMatchFinder.h" #include "clang/Lex/Lexer.h" -#include "../utils/Matchers.h" using namespace clang::ast_matchers; @@ -19,6 +20,9 @@ namespace clang { namespace tidy { namespace misc { + +// Semicolon separated list of known string compare-like functions. The list +// must ends with a semicolon. static const char KnownStringCompareFunctions[] = "__builtin_memcmp;" "__builtin_strcasecmp;" "__builtin_strcmp;" @@ -64,19 +68,6 @@ static const char KnownStringCompareFunctions[] = "__builtin_memcmp;" "wcsnicmp;" "wmemcmp;"; -static const char StringCompareLikeFunctionsDelimiter[] = ";"; - -static void ParseFunctionNames(StringRef Option, - std::vector<std::string> *Result) { - SmallVector<StringRef, 4> Functions; - Option.split(Functions, StringCompareLikeFunctionsDelimiter); - for (StringRef &Function : Functions) { - Function = Function.trim(); - if (!Function.empty()) - Result->push_back(Function); - } -} - SuspiciousStringCompareCheck::SuspiciousStringCompareCheck( StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), @@ -102,9 +93,9 @@ void SuspiciousStringCompareCheck::registerMatchers(MatchFinder *Finder) { // Add the list of known string compare-like functions and add user-defined // functions. - std::vector<std::string> FunctionNames; - ParseFunctionNames(KnownStringCompareFunctions, &FunctionNames); - ParseFunctionNames(StringCompareLikeFunctions, &FunctionNames); + std::vector<std::string> FunctionNames = utils::options::parseStringList( + (llvm::Twine(KnownStringCompareFunctions) + StringCompareLikeFunctions) + .str()); // Match a call to a string compare functions. const auto FunctionCompareDecl = |

