@@ -33,98 +33,98 @@ AST_MATCHER_P(FunctionDecl, isInstantiatedFrom, Matcher<FunctionDecl>,
33
33
UnusedReturnValueCheck::UnusedReturnValueCheck (llvm::StringRef Name,
34
34
ClangTidyContext *Context)
35
35
: ClangTidyCheck(Name, Context),
36
- CheckedFunctions (Options.get( " CheckedFunctions " ,
37
- " ::std::async;"
38
- " ::std::launder;"
39
- " ::std::remove;"
40
- " ::std::remove_if;"
41
- " ::std::unique;"
42
- " ::std::unique_ptr::release;"
43
- " ::std::basic_string::empty;"
44
- " ::std::vector::empty;"
45
- " ::std::back_inserter;"
46
- " ::std::distance;"
47
- " ::std::find;"
48
- " ::std::find_if;"
49
- " ::std::inserter;"
50
- " ::std::lower_bound;"
51
- " ::std::make_pair;"
52
- " ::std::map::count;"
53
- " ::std::map::find;"
54
- " ::std::map::lower_bound;"
55
- " ::std::multimap::equal_range;"
56
- " ::std::multimap::upper_bound;"
57
- " ::std::set::count;"
58
- " ::std::set::find;"
59
- " ::std::setfill;"
60
- " ::std::setprecision;"
61
- " ::std::setw;"
62
- " ::std::upper_bound;"
63
- " ::std::vector::at;"
64
- // C standard library
65
- " ::bsearch;"
66
- " ::ferror;"
67
- " ::feof;"
68
- " ::isalnum;"
69
- " ::isalpha;"
70
- " ::isblank;"
71
- " ::iscntrl;"
72
- " ::isdigit;"
73
- " ::isgraph;"
74
- " ::islower;"
75
- " ::isprint;"
76
- " ::ispunct;"
77
- " ::isspace;"
78
- " ::isupper;"
79
- " ::iswalnum;"
80
- " ::iswprint;"
81
- " ::iswspace;"
82
- " ::isxdigit;"
83
- " ::memchr;"
84
- " ::memcmp;"
85
- " ::strcmp;"
86
- " ::strcoll;"
87
- " ::strncmp;"
88
- " ::strpbrk;"
89
- " ::strrchr;"
90
- " ::strspn;"
91
- " ::strstr;"
92
- " ::wcscmp;"
93
- // POSIX
94
- " ::access;"
95
- " ::bind;"
96
- " ::connect;"
97
- " ::difftime;"
98
- " ::dlsym;"
99
- " ::fnmatch;"
100
- " ::getaddrinfo;"
101
- " ::getopt;"
102
- " ::htonl;"
103
- " ::htons;"
104
- " ::iconv_open;"
105
- " ::inet_addr;"
106
- " ::isascii;"
107
- " ::isatty;"
108
- " ::mmap;"
109
- " ::newlocale;"
110
- " ::openat;"
111
- " ::pathconf;"
112
- " ::pthread_equal;"
113
- " ::pthread_getspecific;"
114
- " ::pthread_mutex_trylock;"
115
- " ::readdir;"
116
- " ::readlink;"
117
- " ::recvmsg;"
118
- " ::regexec;"
119
- " ::scandir;"
120
- " ::semget;"
121
- " ::setjmp;"
122
- " ::shm_open;"
123
- " ::shmget;"
124
- " ::sigismember;"
125
- " ::strcasecmp;"
126
- " ::strsignal;"
127
- " ::ttyname" )),
36
+ CheckedFunctions (utils::options::parseStringList(
37
+ Options.get( " CheckedFunctions " , " ::std::async;"
38
+ " ::std::launder;"
39
+ " ::std::remove;"
40
+ " ::std::remove_if;"
41
+ " ::std::unique;"
42
+ " ::std::unique_ptr::release;"
43
+ " ::std::basic_string::empty;"
44
+ " ::std::vector::empty;"
45
+ " ::std::back_inserter;"
46
+ " ::std::distance;"
47
+ " ::std::find;"
48
+ " ::std::find_if;"
49
+ " ::std::inserter;"
50
+ " ::std::lower_bound;"
51
+ " ::std::make_pair;"
52
+ " ::std::map::count;"
53
+ " ::std::map::find;"
54
+ " ::std::map::lower_bound;"
55
+ " ::std::multimap::equal_range;"
56
+ " ::std::multimap::upper_bound;"
57
+ " ::std::set::count;"
58
+ " ::std::set::find;"
59
+ " ::std::setfill;"
60
+ " ::std::setprecision;"
61
+ " ::std::setw;"
62
+ " ::std::upper_bound;"
63
+ " ::std::vector::at;"
64
+ // C standard library
65
+ " ::bsearch;"
66
+ " ::ferror;"
67
+ " ::feof;"
68
+ " ::isalnum;"
69
+ " ::isalpha;"
70
+ " ::isblank;"
71
+ " ::iscntrl;"
72
+ " ::isdigit;"
73
+ " ::isgraph;"
74
+ " ::islower;"
75
+ " ::isprint;"
76
+ " ::ispunct;"
77
+ " ::isspace;"
78
+ " ::isupper;"
79
+ " ::iswalnum;"
80
+ " ::iswprint;"
81
+ " ::iswspace;"
82
+ " ::isxdigit;"
83
+ " ::memchr;"
84
+ " ::memcmp;"
85
+ " ::strcmp;"
86
+ " ::strcoll;"
87
+ " ::strncmp;"
88
+ " ::strpbrk;"
89
+ " ::strrchr;"
90
+ " ::strspn;"
91
+ " ::strstr;"
92
+ " ::wcscmp;"
93
+ // POSIX
94
+ " ::access;"
95
+ " ::bind;"
96
+ " ::connect;"
97
+ " ::difftime;"
98
+ " ::dlsym;"
99
+ " ::fnmatch;"
100
+ " ::getaddrinfo;"
101
+ " ::getopt;"
102
+ " ::htonl;"
103
+ " ::htons;"
104
+ " ::iconv_open;"
105
+ " ::inet_addr;"
106
+ " ::isascii;"
107
+ " ::isatty;"
108
+ " ::mmap;"
109
+ " ::newlocale;"
110
+ " ::openat;"
111
+ " ::pathconf;"
112
+ " ::pthread_equal;"
113
+ " ::pthread_getspecific;"
114
+ " ::pthread_mutex_trylock;"
115
+ " ::readdir;"
116
+ " ::readlink;"
117
+ " ::recvmsg;"
118
+ " ::regexec;"
119
+ " ::scandir;"
120
+ " ::semget;"
121
+ " ::setjmp;"
122
+ " ::shm_open;"
123
+ " ::shmget;"
124
+ " ::sigismember;"
125
+ " ::strcasecmp;"
126
+ " ::strsignal;"
127
+ " ::ttyname" ) )),
128
128
CheckedReturnTypes(utils::options::parseStringList(
129
129
Options.get(" CheckedReturnTypes" , " ::std::error_code;"
130
130
" ::std::error_condition;"
@@ -133,36 +133,36 @@ UnusedReturnValueCheck::UnusedReturnValueCheck(llvm::StringRef Name,
133
133
" ::boost::system::error_code" ))),
134
134
AllowCastToVoid(Options.get(" AllowCastToVoid" , false )) {}
135
135
136
- UnusedReturnValueCheck::UnusedReturnValueCheck (llvm::StringRef Name,
137
- ClangTidyContext *Context,
138
- std::string CheckedFunctions)
136
+ UnusedReturnValueCheck::UnusedReturnValueCheck (
137
+ llvm::StringRef Name, ClangTidyContext *Context,
138
+ std::vector<StringRef> CheckedFunctions)
139
139
: UnusedReturnValueCheck(Name, Context, std::move(CheckedFunctions), {},
140
140
false ) {}
141
141
142
142
UnusedReturnValueCheck::UnusedReturnValueCheck (
143
143
llvm::StringRef Name, ClangTidyContext *Context,
144
- std::string CheckedFunctions, std:: vector<StringRef> CheckedReturnTypes ,
145
- bool AllowCastToVoid)
144
+ std::vector<StringRef> CheckedFunctions ,
145
+ std::vector<StringRef> CheckedReturnTypes, bool AllowCastToVoid)
146
146
: ClangTidyCheck(Name, Context),
147
147
CheckedFunctions (std::move(CheckedFunctions)),
148
148
CheckedReturnTypes(std::move(CheckedReturnTypes)),
149
149
AllowCastToVoid(AllowCastToVoid) {}
150
150
151
151
void UnusedReturnValueCheck::storeOptions (ClangTidyOptions::OptionMap &Opts) {
152
- Options.store (Opts, " CheckedFunctions" , CheckedFunctions);
152
+ Options.store (Opts, " CheckedFunctions" ,
153
+ utils::options::serializeStringList (CheckedFunctions));
153
154
Options.store (Opts, " CheckedReturnTypes" ,
154
155
utils::options::serializeStringList (CheckedReturnTypes));
155
156
Options.store (Opts, " AllowCastToVoid" , AllowCastToVoid);
156
157
}
157
158
158
159
void UnusedReturnValueCheck::registerMatchers (MatchFinder *Finder) {
159
- auto FunVec = utils::options::parseStringList (CheckedFunctions);
160
-
161
160
auto MatchedDirectCallExpr =
162
161
expr (callExpr (callee (functionDecl (
163
162
// Don't match void overloads of checked functions.
164
163
unless (returns (voidType ())),
165
- anyOf (isInstantiatedFrom (hasAnyName (FunVec)),
164
+ anyOf (isInstantiatedFrom (matchers::matchesAnyListedName (
165
+ CheckedFunctions)),
166
166
returns (hasCanonicalType (hasDeclaration (
167
167
namedDecl (matchers::matchesAnyListedName (
168
168
CheckedReturnTypes)))))))))
0 commit comments