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
54 lines
1.7 KiB
ReStructuredText
54 lines
1.7 KiB
ReStructuredText
.. title:: clang-tidy - bugprone-non-zero-enum-to-bool-conversion
|
|
|
|
bugprone-non-zero-enum-to-bool-conversion
|
|
=========================================
|
|
|
|
Detect implicit and explicit casts of ``enum`` type into ``bool`` where
|
|
``enum`` type doesn't have a zero-value enumerator. If the ``enum`` is used
|
|
only to hold values equal to its enumerators, then conversion to ``bool`` will
|
|
always result in ``true`` value. This can lead to unnecessary code that reduces
|
|
readability and maintainability and can result in bugs.
|
|
|
|
May produce false positives if the ``enum`` is used to store other values
|
|
(used as a bit-mask or zero-initialized on purpose). To deal with them,
|
|
``// NOLINT`` or casting first to the underlying type before casting to
|
|
``bool`` can be used.
|
|
|
|
It is important to note that this check will not generate warnings if the
|
|
definition of the enumeration type is not available.
|
|
Additionally, C++11 enumeration classes are supported by this check.
|
|
|
|
Overall, this check serves to improve code quality and readability by
|
|
identifying and flagging instances where implicit or explicit casts from
|
|
enumeration types to boolean could cause potential issues.
|
|
|
|
Example
|
|
-------
|
|
|
|
.. code-block:: c++
|
|
|
|
enum EStatus {
|
|
OK = 1,
|
|
NOT_OK,
|
|
UNKNOWN
|
|
};
|
|
|
|
void process(EStatus status) {
|
|
if (!status) {
|
|
// this true-branch won't be executed
|
|
return;
|
|
}
|
|
// proceed with "valid data"
|
|
}
|
|
|
|
Options
|
|
-------
|
|
|
|
.. option:: EnumIgnoreList
|
|
|
|
Option is used to ignore certain enum types when checking for
|
|
implicit/explicit casts to bool. It accepts a semicolon-separated list of
|
|
(fully qualified) enum type names or regular expressions that match the enum
|
|
type names.
|
|
The default value is an empty string, which means no enums will be ignored.
|