Bug 408380

Summary: detect useless overrides
Product: [Developer tools] clazy Reporter: Milian Wolff <mail>
Component: generalAssignee: Unassigned bugs mailing-list <unassigned-bugs>
Status: REPORTED ---    
Severity: wishlist CC: smartins, tu4manjohn
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Milian Wolff 2019-06-06 12:07:34 UTC
SUMMARY
struct foo { virtual void asdf(); }
struct bar : foo { void asdf() override { foo::asdf(); } }

The override is completely useless, and I find such code far too often - could clazy/clang-tidy detect it and remove the useless code?

it may be problematic to detect when

- non-trivial arguments are forwarded (still useless)
- Q_UNUSED or similar
- instead of calling the parent implementation, the parent implementation code is duplicated:

struct foo { virtual void asdf() { printf("hello");  }
struct bar : foo { void asdf() override { printf("hello"); } }

OBSERVED RESULT
not detected

EXPECTED RESULT
useless overrides are marked and offered for automatic removal
Comment 1 Иван Туманов 2019-06-07 11:56:53 UTC
(In reply to Milian Wolff from comment #0)
> SUMMARY
> struct foo { virtual void asdf(); }
> struct bar : foo { void asdf() override { foo::asdf(); } }
> 
> The override is completely useless, and I find such code far too often -
> could clazy/clang-tidy detect it and remove the useless code?
> 
> it may be problematic to detect when
> 
> - non-trivial arguments are forwarded (still useless)
> - Q_UNUSED or similar
> - instead of calling the parent implementation, the parent implementation
> code is duplicated:
> 
> struct foo { virtual void asdf() { printf("hello");  }
> struct bar : foo { void asdf() override { printf("hello"); } }
> 
> OBSERVED RESULT
> not detected
> 
> EXPECTED RESULT
> useless overrides are marked and offered for automatic removal