From: Argyrios Kyrtzidis Date: Wed, 26 Jan 2011 01:26:41 +0000 (+0000) Subject: [analyzer] Improve the diagnostic for the self-init checker. Suggestion by Ted! X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4717f163eb3578f5bada399dd6ced1c62847bfe4;p=clang [analyzer] Improve the diagnostic for the self-init checker. Suggestion by Ted! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124263 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp b/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp index b62d2309fc..2eceb9caa3 100644 --- a/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp @@ -102,8 +102,8 @@ namespace { class InitSelfBug : public BugType { const std::string desc; public: - InitSelfBug() : BugType("missing \"self = [{initializer}]\"", - "missing \"self = [{initializer}]\"") {} + InitSelfBug() : BugType("missing \"self = [(super or self) init...]\"", + "missing \"self = [(super or self) init...]\"") {} }; } // end anonymous namespace @@ -209,7 +209,8 @@ void ObjCSelfInitChecker::PostVisitObjCIvarRefExpr(CheckerContext &C, return; checkForInvalidSelf(E->getBase(), C, - "Using an ivar before setting 'self' to the result of an initializer"); + "Instance variable used before setting 'self' to the result of " + "'[(super or self) init...]'"); } void ObjCSelfInitChecker::PreVisitReturnStmt(CheckerContext &C, @@ -220,7 +221,8 @@ void ObjCSelfInitChecker::PreVisitReturnStmt(CheckerContext &C, return; checkForInvalidSelf(S->getRetValue(), C, - "Returning 'self' before setting it to the result of an initializer"); + "Returning 'self' before setting it to the result of " + "'[(super or self) init...]'"); } // When a call receives a reference to 'self', [Pre/Post]VisitGenericCall pass diff --git a/test/Analysis/self-init.m b/test/Analysis/self-init.m index 9c30d26be0..0be8285c31 100644 --- a/test/Analysis/self-init.m +++ b/test/Analysis/self-init.m @@ -97,7 +97,7 @@ extern void *somePtr; } -(id)init6 { - [NSBundle loadNibNamed:@"Window" owner:myivar]; // expected-warning {{Using an ivar}} + [NSBundle loadNibNamed:@"Window" owner:myivar]; // expected-warning {{Instance variable used}} return [self initWithSomething:0]; } @@ -121,7 +121,7 @@ extern void *somePtr; } -(id)init10 { - myivar = 0; // expected-warning {{Using an ivar}} + myivar = 0; // expected-warning {{Instance variable used}} return self; } @@ -136,7 +136,7 @@ extern void *somePtr; -(id)init13 { if ((self == [super init])) { - myivar = 0; // expected-warning {{Using an ivar}} + myivar = 0; // expected-warning {{Instance variable used}} } return self; // expected-warning {{Returning 'self'}} }