[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