[PATCH] D61260: [clang-tidy] Extend bugprone-sizeof-expression to check sizeof(pointers to structures)
Balogh, Ádám via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon May 6 23:15:53 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL360114: [clang-tidy] Extend bugprone-sizeof-expression to check sizeof(pointers to… (authored by baloghadamsoftware, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D61260?vs=197966&id=198398#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D61260/new/
https://reviews.llvm.org/D61260
Files:
clang-tools-extra/trunk/clang-tidy/bugprone/SizeofExpressionCheck.cpp
clang-tools-extra/trunk/test/clang-tidy/bugprone-sizeof-expression.cpp
Index: clang-tools-extra/trunk/clang-tidy/bugprone/SizeofExpressionCheck.cpp
===================================================================
--- clang-tools-extra/trunk/clang-tidy/bugprone/SizeofExpressionCheck.cpp
+++ clang-tools-extra/trunk/clang-tidy/bugprone/SizeofExpressionCheck.cpp
@@ -145,10 +145,17 @@
unaryOperator(hasOperatorName("&"),
hasUnaryOperand(ignoringParenImpCasts(expr(
hasType(qualType(hasCanonicalType(recordType())))))));
+ const auto PointerToStructType = type(hasUnqualifiedDesugaredType(
+ pointerType(pointee(recordType()))));
+ const auto PointerToStructExpr = expr(ignoringParenImpCasts(expr(
+ hasType(qualType(hasCanonicalType(PointerToStructType))),
+ unless(cxxThisExpr()))));
Finder->addMatcher(
- expr(sizeOfExpr(has(expr(ignoringParenImpCasts(
- anyOf(ArrayCastExpr, PointerToArrayExpr, StructAddrOfExpr))))))
+ expr(anyOf(sizeOfExpr(has(expr(ignoringParenImpCasts(
+ anyOf(ArrayCastExpr, PointerToArrayExpr, StructAddrOfExpr,
+ PointerToStructExpr))))),
+ sizeOfExpr(has(PointerToStructType))))
.bind("sizeof-pointer-to-aggregate"),
this);
Index: clang-tools-extra/trunk/test/clang-tidy/bugprone-sizeof-expression.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-tidy/bugprone-sizeof-expression.cpp
+++ clang-tools-extra/trunk/test/clang-tidy/bugprone-sizeof-expression.cpp
@@ -193,11 +193,15 @@
Array10* ptr;
};
typedef const MyStruct TMyStruct;
+ typedef const MyStruct *PMyStruct;
+ typedef TMyStruct *PMyStruct2;
static TMyStruct kGlocalMyStruct = {};
static TMyStruct volatile * kGlocalMyStructPtr = &kGlocalMyStruct;
MyStruct S;
+ PMyStruct PS;
+ PMyStruct2 PS2;
Array10 A10;
int sum = 0;
@@ -225,6 +229,14 @@
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof(A*)'; pointer to aggregate
sum += sizeof(&S);
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof(A*)'; pointer to aggregate
+ sum += sizeof(MyStruct*);
+ // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof(A*)'; pointer to aggregate
+ sum += sizeof(PMyStruct);
+ // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof(A*)'; pointer to aggregate
+ sum += sizeof(PS);
+ // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof(A*)'; pointer to aggregate
+ sum += sizeof(PS2);
+ // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof(A*)'; pointer to aggregate
sum += sizeof(&A10);
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof(A*)'; pointer to aggregate
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D61260.198398.patch
Type: text/x-patch
Size: 2808 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190507/052f6564/attachment-0001.bin>
More information about the cfe-commits
mailing list