clang-tidy - readability-operators-representation — Extra Clang Tools 18.1.8 documentation

# Extra Clang Tools 18.1.8 documentation

## clang-tidy - readability-operators-representation

# readability-operators-representation

Enforces consistent token representation for invoked binary, unary and overloaded operators in C++ code. The check supports both traditional and alternative representations of operators, such as `&&` and `and`, `||` and `or`, and so on.

In the realm of C++ programming, developers have the option to choose between two distinct representations for operators: traditional token representation and alternative token representation. Traditional tokens utilize symbols, such as `&&`, `||`, and `!`, while alternative tokens employ more descriptive words like `and`, `or`, and `not`.

In the following mapping table, a comprehensive list of traditional and alternative tokens, along with their corresponding representations, is presented:

Token Representation Mapping Table
Traditional | Alternative
--- | ---
`&&` | `and`
`&=` | `and_eq`
`&` | `bitand`
`|` | `bitor`
`~` | `compl`
`!` | `not`
`!=` | `not_eq`
`||` | `or`
`|=` | `or_eq`
`^` | `xor`
`^=` | `xor_eq`

## Example

    // Traditional Token Representation:

    if (!a||!b)
    {
        // do something
    }

    // Alternative Token Representation:

    if (not a or not b)
    {
        // do something
    }

## Options

Due to the distinct benefits and drawbacks of each representation, the default configuration doesn’t enforce either. Explicit configuration is needed.

To configure check to enforce Traditional Token Representation for all operators set options to &&;&=;&;|;~;!;!=;||;|=;^;^=.

To configure check to enforce Alternative Token Representation for all operators set options to and;and_eq;bitand;bitor;compl;not;not_eq;or;or_eq;xor;xor_eq.

Developers do not need to enforce all operators, and can mix the representations as desired by specifying a semicolon-separated list of both traditional and alternative tokens in the configuration, such as and;||;not.

BinaryOperators

  This option allows you to specify a semicolon-separated list of binary operators for which you want to enforce specific token representation. The default value is empty string.

OverloadedOperators

  This option allows you to specify a semicolon-separated list of overloaded operators for which you want to enforce specific token representation. The default value is empty string.