[PATCH] D54757: [clang-tidy] new check: bugprone-branch-clone
Umann Kristóf via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 28 09:14:11 PST 2018
Szelethus added a comment.
In D54757#1311468 <https://reviews.llvm.org/D54757#1311468>, @donat.nagy wrote:
> **Macros:**
>
> The current implementation of the check only looks at the preprocessed code, therefore it detects the situations where the duplication is created by macros. I added some tests to highlight this behavior.
The only option I see to detect macro related errors is to use a `Lexer`, and compare the tokens one by one, but that might be overkill, and I'm aware of a check in the works that already implements that. I think it's perfectly fine not to cover those cases, but you should definitely document it somewhere, preferably in the rst file.
> I think that in some situations this would be useful for detecting redundant or incorrect parts of macro-infected code.
How about this?
#define PANDA_CUTE_FACTOR 9001
#define CAT_CUTE_FACTOR 9001
if (whatever())
return PANDA_CUTE_FACTOR;
else
return CAT_CUTE_FACTOR;
Your check would warn here, but it is possible, if not likely that the definition of those macros will eventually change. Again, it's fine not to cover this, but this //is// a false positive in a sense.
I have to agree with the folks before me, this patch is amazing, great job!
================
Comment at: test/clang-tidy/bugprone-branch-clone.cpp:200
+
+void test_macro1(int in, int &out) {
+ PASTE_CODE(
----------------
donat.nagy wrote:
> The tests for macro handling start here.
Maybe add dividers? :) The `//===--------------===//` thing, you know.
Repository:
rCTE Clang Tools Extra
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D54757/new/
https://reviews.llvm.org/D54757
More information about the cfe-commits
mailing list