Index: clang-tools-extra/trunk/clang-tidy/readability/StaticAccessedThroughInstanceCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/StaticAccessedThroughInstanceCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/readability/StaticAccessedThroughInstanceCheck.cpp @@ -67,6 +67,7 @@ const ASTContext *AstContext = Result.Context; PrintingPolicy PrintingPolicyWithSupressedTag(AstContext->getLangOpts()); PrintingPolicyWithSupressedTag.SuppressTagKeyword = true; + PrintingPolicyWithSupressedTag.SuppressUnwrittenScope = true; std::string BaseTypeName = BaseType.getAsString(PrintingPolicyWithSupressedTag); Index: clang-tools-extra/trunk/test/clang-tidy/readability-static-accessed-through-instance.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/readability-static-accessed-through-instance.cpp +++ clang-tools-extra/trunk/test/clang-tidy/readability-static-accessed-through-instance.cpp @@ -220,3 +220,31 @@ qp->y = 10; // OK, the overloaded operator might have side-effects. qp->K = 10; // } + +namespace { + struct Anonymous { + static int I; + }; +} + +void use_anonymous() { + Anonymous Anon; + Anon.I; + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: static member + // CHECK-FIXES: {{^}} Anonymous::I;{{$}} +} + +namespace Outer { + inline namespace Inline { + struct S { + static int I; + }; + } +} + +void use_inline() { + Outer::S V; + V.I; + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: static member + // CHECK-FIXES: {{^}} Outer::S::I;{{$}} +}