[PATCH] D22507: Clang-tidy - Enum misuse check
Alexander Kornienko via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 19 07:30:37 PST 2016
alexfh added a comment.
A few more notes, all fine for a follow up.
================
Comment at: clang-tidy/misc/SuspiciousEnumUsageCheck.cpp:202
+
+ const auto *LhsExpr = Result.Nodes.getNodeAs<Expr>("lhsExpr");
+ const auto *RhsExpr = Result.Nodes.getNodeAs<Expr>("rhsExpr");
----------------
Looks like you're doing exactly same thing twice for lhs and rhs. Pull this out to a function. Fine for a follow up.
================
Comment at: clang-tidy/misc/SuspiciousEnumUsageCheck.cpp:212-213
+ RhsDecExpr ? dyn_cast<EnumConstantDecl>(RhsDecExpr->getDecl()) : nullptr;
+ bool LhsVar = !LhsConstant;
+ bool RhsVar = !RhsConstant;
+
----------------
There's not much value in these variables.
================
Comment at: clang-tidy/misc/SuspiciousEnumUsageCheck.cpp:215-219
+ int NonPowOfTwoCounter = countNonPowOfTwoLiteralNum(EnumDec);
+ ValueRange VR(EnumDec);
+ int EnumLen = enumLength(EnumDec);
+ if (!isPossiblyBitMask(NonPowOfTwoCounter, EnumLen, VR, EnumDec))
+ return;
----------------
This code doesn't need the lhs/rhs variable declared above it. Move it up.
================
Comment at: clang-tidy/misc/SuspiciousEnumUsageCheck.cpp:220-227
+ // Report left hand side parameter if neccessary.
+ if (LhsVar) {
+ diag(EnumDec->getInnerLocStart(), BitmaskVarErrorMessage);
+ diag(LhsExpr->getExprLoc(), BitmaskNoteMessage, DiagnosticIDs::Note);
+ } else if (isNonPowerOf2NorNullLiteral(LhsConstant)) {
+ diag(LhsConstant->getSourceRange().getBegin(), BitmaskErrorMessage);
+ diag(LhsExpr->getExprLoc(), BitmaskNoteMessage, DiagnosticIDs::Note);
----------------
This code can be pulled to a function / method to avoid repeating it twice (starting from the ` const auto *LhsExpr = Result.Nodes.getNodeAs<Expr>("lhsExpr");` part).
================
Comment at: docs/clang-tidy/checks/misc-suspicious-enum-usage.rst:31
+
+===============
+
----------------
alexfh wrote:
> This notation is used to make the previous line a heading. Doesn't seem to be the case here. See http://llvm.org/docs/SphinxQuickstartTemplate.html for some examples. Please also try to build your docs to check for obvious issues.
This is not done yet.
https://reviews.llvm.org/D22507
More information about the cfe-commits
mailing list