[clang-tools-extra] [clang-tidy] Rename hicpp-multiway-paths-covered to bugprone-unhandled-code-paths (PR #191625)
Zeyi Xu via cfe-commits
cfe-commits at lists.llvm.org
Sun May 10 07:53:54 PDT 2026
================
@@ -3,96 +3,6 @@
hicpp-multiway-paths-covered
============================
-This check discovers situations where code paths are not fully-covered.
-It furthermore suggests using ``if`` instead of ``switch`` if the code
-will be more clear.
-The `rule 6.1.2 <https://www.perforce.com/resources/qac/high-integrity-cpp-coding-rules>`_
-and `rule 6.1.4 <https://www.perforce.com/resources/qac/high-integrity-cpp-coding-rules>`_
-of the High Integrity C++ Coding Standard are enforced.
-
-``if-else if`` chains that miss a final ``else`` branch might lead to
-unexpected program execution and be the result of a logical error.
-If the missing ``else`` branch is intended you can leave it empty with
-a clarifying comment.
-This warning can be noisy on some code bases, so it is disabled by default.
-
-.. code-block:: c++
-
- void f1() {
- int i = determineTheNumber();
-
- if(i > 0) {
- // Some Calculation
- } else if (i < 0) {
- // Precondition violated or something else.
- }
- // ...
- }
-
-Similar arguments hold for ``switch`` statements which do not cover all
-possible code paths.
-
-.. code-block:: c++
-
- // The missing default branch might be a logical error. It can be kept empty
- // if there is nothing to do, making it explicit.
- void f2(int i) {
- switch (i) {
- case 0: // something
- break;
- case 1: // something else
- break;
- }
- // All other numbers?
- }
-
- // Violates this rule as well, but already emits a compiler warning (-Wswitch).
- enum Color { Red, Green, Blue, Yellow };
- void f3(enum Color c) {
- switch (c) {
- case Red: // We can't drive for now.
- break;
- case Green: // We are allowed to drive.
- break;
- }
- // Other cases missing
- }
-
-
-The `rule 6.1.4 <https://www.perforce.com/resources/qac/high-integrity-cpp-coding-rules>`_
-requires every ``switch`` statement to have at least two ``case`` labels other than a `default` label.
-Otherwise, the ``switch`` could be better expressed with an ``if`` statement.
-Degenerated ``switch`` statements without any labels are caught as well.
-
-.. code-block:: c++
-
- // Degenerated switch that could be better written as `if`
- int i = 42;
- switch(i) {
- case 1: // do something here
- default: // do something else here
- }
-
- // Should rather be the following:
- if (i == 1) {
- // do something here
- }
- else {
- // do something here
- }
-
-
-.. code-block:: c++
-
- // A completely degenerated switch will be diagnosed.
- int i = 42;
- switch(i) {}
-
-
-Options
--------
-
-.. option:: WarnOnMissingElse
-
- Boolean flag that activates a warning for missing ``else`` branches.
- Default is `false`.
+The `hicpp-multiway-paths-covered` check is an alias, please see
+`bugprone-unhandled-code-paths <../bugprone/unhandled-code-paths.html>`
----------------
zeyi2 wrote:
```suggestion
`bugprone-unhandled-code-paths <../bugprone/unhandled-code-paths.html>`_
```
https://github.com/llvm/llvm-project/pull/191625
More information about the cfe-commits
mailing list