.. 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.
