summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/docs/clang-tidy/checks/misc-suspicious-string-compare.rst
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.
OpenPOWER on IntegriCloud