[PATCH] D37808: [clang-tidy] Add new hicpp-multiway-paths-covered check for missing branches

Jonas Devlieghere via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 23 18:11:47 PDT 2017


JDevlieghere added inline comments.


================
Comment at: clang-tidy/hicpp/MultiwayPathsCoveredCheck.cpp:80
+
+  // Unsigned overflow occured. Returning max() is sufficient, since noone
+  // writes so many case labels in source code.
----------------
Maybe merge this with the function comment, no point in having both imho.


================
Comment at: clang-tidy/hicpp/MultiwayPathsCoveredCheck.cpp:82
+  // writes so many case labels in source code.
+  if (Bits > 0 && DiscreteValues <= 1) {
+    return std::numeric_limits<std::size_t>::max();
----------------
LLVM style guide says no braces with single line if/else statements. No need for the else after a return. Alternatively you could use the ternary operator. 


================
Comment at: clang-tidy/hicpp/MultiwayPathsCoveredCheck.cpp:100
+    return twoPow(Context.getTypeSize(T));
+  else
+    return twoPow(0ul);
----------------
No need for the else here. See previous comment. 


================
Comment at: clang-tidy/hicpp/MultiwayPathsCoveredCheck.cpp:146
+
+  if (CaseCount == 1 || CaseCount == 2) {
+    diag(Switch->getLocStart(),
----------------
Braces


================
Comment at: clang-tidy/hicpp/MultiwayPathsCoveredCheck.cpp:180
+    if (const auto *IntegerCondition =
+            Result.Nodes.getNodeAs<DeclRefExpr>("non-enum-condition")) {
+      return getNumberOfPossibleValues(IntegerCondition->getType(),
----------------
Braces


================
Comment at: clang-tidy/hicpp/MultiwayPathsCoveredCheck.cpp:183
+                                       *Result.Context);
+    } else if (const auto *BitfieldDecl =
+                   Result.Nodes.getNodeAs<FieldDecl>("bitfield")) {
----------------
You can just use if because of the return.


================
Comment at: clang-tidy/hicpp/MultiwayPathsCoveredCheck.cpp:186
+      return twoPow(BitfieldDecl->getBitWidthValue(*Result.Context));
+    } else {
+      llvm_unreachable("either bitfield or non-enum must be condition");
----------------
Drop the else


================
Comment at: clang-tidy/hicpp/MultiwayPathsCoveredCheck.cpp:198
+  // missed some value explicity, therefore add a default branch.
+  if (CaseCount < MaxPathsPossible) {
+    diag(Switch->getLocStart(), CoverMsgs[CaseCount == 1 ? 0 : 1]);
----------------
Braces


https://reviews.llvm.org/D37808





More information about the cfe-commits mailing list