[PATCH] D15823: Support virtual-near-miss check.
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 11 08:18:30 PST 2016
alexfh added a comment.
A few minor comments.
================
Comment at: clang-tidy/misc/VirtualNearMissCheck.cpp:23
@@ +22,3 @@
+/// Finds out if the given method overrides some method.
+bool isOverrideMethod(const CXXMethodDecl *MD) {
+ return MD->size_overridden_methods() > 0 || MD->hasAttr<OverrideAttr>();
----------------
Please mark this and other functions `static` to make them local to the translation unit.
================
Comment at: clang-tidy/misc/VirtualNearMissCheck.cpp:43
@@ +42,3 @@
+
+ // Check if return types are identical
+ if (Context->hasSameType(DerivedReturnTy, BaseReturnTy))
----------------
nit: Missing trailing period.
================
Comment at: clang-tidy/misc/VirtualNearMissCheck.cpp:68
@@ +67,3 @@
+ // The return types aren't either both pointers or references to a class type.
+ if (DTy.isNull()) {
+ return false;
----------------
nit: No braces around one-line `if` bodies, please.
================
Comment at: clang-tidy/misc/VirtualNearMissCheck.cpp:90
@@ +89,3 @@
+ // Check ambiguity.
+ if (Paths.isAmbiguous(Context->getCanonicalType(BTy).getUnqualifiedType()))
+ return false;
----------------
I wonder whether `BTy.getCanonicalType().getUnqualifiedType()` will work here.
================
Comment at: clang-tidy/misc/VirtualNearMissCheck.cpp:99
@@ +98,3 @@
+ for (const auto &Path : Paths) {
+ if (Path.Access == AS_public) {
+ HasPublicAccess = true;
----------------
nit: No braces around one-line `if` bodies, please.
================
Comment at: clang-tidy/misc/VirtualNearMissCheck.cpp:188
@@ +187,3 @@
+ auto Iter = PossibleMap.find(Id);
+ if (Iter != PossibleMap.end()) {
+ return Iter->second;
----------------
nit: No braces around one-line `if` bodies, please.
================
Comment at: clang-tidy/misc/VirtualNearMissCheck.cpp:203
@@ +202,3 @@
+ auto Iter = OverriddenMap.find(Key);
+ if (Iter != OverriddenMap.end()) {
+ return Iter->second;
----------------
nit: No braces around one-line `if` bodies, please.
================
Comment at: clang-tidy/misc/VirtualNearMissCheck.cpp:258
@@ +257,3 @@
+ "'%0' has a similar name and the same "
+ "signature with virtual method '%1'. "
+ "Did you meant to override it?")
----------------
The diagnostic messages are not complete sentences. Please use a semicolon instead of the period and a lower-case letter after it. Also, s/signature with/signature as/ and s/meant/mean/. Overall it should be:
`method '%0' has a similar name and the same signature as method '%1'; did you mean to override it?`.
================
Comment at: test/clang-tidy/misc-virtual-near-miss.cpp:15
@@ +14,3 @@
+ void func2();
+ // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: 'Derived::func2' has a similar name and the same signature with virtual method 'Base::func'. Did you meant to override it?
+
----------------
Please remove the `. Did you mean to override it?` part from all CHECK lines except for the first one to make the test file easier to read. Maybe even cut the static test in the middle:
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: 'Derived::func2' has {{.*}} 'Base::func'
================
Comment at: test/clang-tidy/misc-virtual-near-miss.cpp:42
@@ +41,3 @@
+class Child : Father, Mother {
+public:
+ Child();
----------------
Please mark the inheritance explicitly `private` then to avoid questions.
http://reviews.llvm.org/D15823
More information about the cfe-commits
mailing list