blob: c634be77f05eb3db4092e01bd23f05e94bf19b43 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
.. title:: clang-tidy - misc-suspicious-string-compare
misc-suspicious-string-compare
==============================
Find suspicious usage of runtime string comparison functions.
This check is valid in C and C++.
Checks for calls with implicit comparator and proposed to explicitly add it.
.. code:: c++
if (strcmp(...)) // Implicitly compare to zero
if (!strcmp(...)) // Won't warn
if (strcmp(...) != 0) // Won't warn
Checks that compare function results (i,e, ``strcmp``) are compared to valid
constant. The resulting value is
.. code::
< 0 when lower than,
> 0 when greater than,
== 0 when equals.
A common mistake is to compare the result to '1' or '-1'.
.. code:: c++
if (strcmp(...) == -1) // Incorrect usage of the returned value.
Additionally, the check warns if the results value is implicitly cast to a
*suspicious* non-integer type. It's happening when the returned value is used in
a wrong context.
.. code:: c++
if (strcmp(...) < 0.) // Incorrect usage of the returned value.
|