Discookie
|
f329e3ed90
|
[clang-tidy] Add bugprone-pointer-arithmetic-on-polymorphic-object check (#91951)
Finds pointer arithmetic on classes that declare a virtual function.
This check corresponds to the SEI Cert rule [CTR56-CPP: Do not use
pointer arithmetic on polymorphic
objects](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR56-CPP.+Do+not+use+pointer+arithmetic+on+polymorphic+objects).
```cpp
struct Base {
virtual void ~Base();
};
struct Derived : public Base {};
void foo(Base *b) {
b += 1; // passing `Derived` to `foo()` results in UB
}
```
[Results on open-source
projects](https://codechecker-demo.eastus.cloudapp.azure.com/Default/runs?run=Discookie-ctr56-with-classnames).
Most of the Qtbase reports are from having a `virtual override`
declaration, and the LLVM reports are true positives, as far as I can
tell.
|
2024-07-04 13:44:31 +00:00 |
|