CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
32 lines
1.1 KiB
ReStructuredText
32 lines
1.1 KiB
ReStructuredText
.. title:: clang-tidy - bugprone-derived-method-shadowing-base-method
|
|
|
|
bugprone-derived-method-shadowing-base-method
|
|
=============================================
|
|
|
|
Finds derived class methods that shadow a (non-virtual) base class method.
|
|
|
|
In order to be considered "shadowing", methods must have the same signature
|
|
(i.e. the same name, same number of parameters, same parameter types, etc).
|
|
Only checks public, non-templated methods.
|
|
|
|
The below example is bugprone because consumers of the ``Derived`` class will
|
|
expect the ``reset`` method to do the work of ``Base::reset()`` in addition to
|
|
extra work required to reset the ``Derived`` class. Common fixes include:
|
|
|
|
- Making the ``reset`` method polymorphic
|
|
- Re-naming ``Derived::reset`` if it's not meant to intersect with
|
|
``Base::reset``
|
|
- Using ``using Base::reset`` to change the access specifier
|
|
|
|
This is also a violation of the Liskov Substitution Principle.
|
|
|
|
.. code-block:: c++
|
|
|
|
struct Base {
|
|
void reset() {/* reset the base class */};
|
|
};
|
|
|
|
struct Derived : public Base {
|
|
void reset() {/* reset the derived class, but not the base class */};
|
|
};
|