Clang tidy bugprone unhandled self assignment #58263
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
None
Purpose of change
More static analysis.
This check looks for suspicious assignment operators that might not correctly handle self-assignment. In practice it is a bit prone to false-positives, but we have so few assignment operators in general that's not a big deal.
Describe the solution
Suppress these warnings in one place and fix them in another.
Also enable
cert-oop54-cpp
which is essentially the same check. Tweak its configuration so that it doesn't have more false positives.Since this check made me look at the
JsonArray
assignment operator I noticed that its code was largely duplicated with the copy constructor and I eliminated that duplication.Describe alternatives you've considered
The 'fix' to
safe_reference
's assignment operator is debatable. I can't think of a situation where it matters one way or the other.I seriously considered just deciding against using these checks entirely.
Testing
Run clang-tidy.
Additional context