<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/68532>68532</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Detect obfuscation of reinterpret_cast
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            enhancement,
            clang-tidy
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          carlosgalvezp
      </td>
    </tr>
</table>

<pre>
    Hi!

This is a check request / enhancement request of an existing check. 

Today, we have the check `cppcoreguidelines-pro-type-reinterpret-cast` to warn about usages of `reinterpret_cast`. What people end up doing to work around the warning is changing this code:

```
float y = *reinterpret_cast<float*>(&x);
```

Into:

```
float y = *static_cast<float*>(static_cast<void*>(&x));
```

However, both expressions are equivalent, as per [the Standard](https://eel.is/c++draft/expr.reinterpret.cast#7).

We would therefore like to flag this case as well. One could argue that obfuscating the code is more dangerous than having the explicit `reinterpret_cast` in the first place, because it's easier to miss in code review and search for afterwards.

So, to check for this case, I believe it could be done in 2 ways:

- Add a `readability` check that tells the user to replace the obfuscated code with an explicit `reinterpret_cast`, or:
- Extend the `cppcoreguidelines-pro-type-reinterpret-cast` check to cover this case as well (potentially opt-in via configuration).

What do you think?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVE1v4zYQ_TX0ZWBBpmJHPugQx2vsnnrYAnssRuRIYkOTWnIo2_31BWUndTbbFgsECkw-vnlvvjBG0zuiRqx3Yr1fYOLBh0ZhsD72aCf6a1y0Xl-az0bIlSj3ony6fn8fTAQTAUENpF4g0PdEkUHIA5Ab0Ck6kuO3c98BOqCziWxcf31UwDtGr_Ei5DOcCAacCHigG7nYlGoclQ_UJ6PJGkdxOQa_5MtIy0DGMYUxEC8VRhabEtjDCYMDbH1iSBF7ilmD2JR38D9u8AK-Dcgwkh8tATkNaQTts9BM5MMLYPDJ6VlTJs5XJoIa0PUzLKdDeU2iero3JTbl7W_-2VmPDBcQ1R6EfPogpXqeEUI-ieqTkLWQm7OQW1Htfkp3_X5x7H8pbGRko34e8f3d5I3-IOb_9Hz2J5oo5FK2ngeg8xgoRuNdBAwE9D2ZCS05zhCMMFIAsd7l3H5ldBqDFuu9kPXAPMZsTR6EPBDZwkQhD0rInZA7HbDjfH4eQ3GXymIWL6tHIbfFvbBvBCef7FzFQJ0PBNa8UK5xZ_G1iBgpizqRtQX85gjU_AZDn3JPIoNvuxQV8rXwNNc9d8MxM2p0PQWfYsa63MmvMDqP1ijD_9KEYNwM60yIDKNFRXMKSWGKBIaFfIxAGA2FLPloYsxv5uiBJkMnQKchEgY1QOcDYMcUThh0fJeHrz4Ts79NV0a-Wc83X6Ala2jKQW_uWwLtHeV4Ek54iT803BKetAa8WkONrbGGL9nVNcacNyZr4-wxxauHQLPP-ew1q6Svlk6Gh-vO-M-0ZcE-vMlZwqcz021Sf31v3NR6UH6i8LEjQMh69EyODVp7AT_y0jiYDILyrjN9CsjGuw-tl_1rDxefMql7EdVhoZtKb6stLqhZbbabx-3qYV0vhkbj9nGFFVG5laqra_1QS7Vut2WnNhskXJhGlrJalWW9qtePVV3UWuqy7Far9qHdrtaVeCjpiMYW1k7Hwod-YWJM1GzqdSUXFluycV76Ut4tayGlkM9CSmXR9Us2-pKP1vtFaDLRsk19FA-lNZHjP9Rs2FKzJyZ1Nxve5X37Y8EWKdjm_Vj3hofUFsofhTxk0tu_XKg_SeUJn8XnyZ_1_x0AAP__C2MvQA">