aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-03-28 16:09:38 +0000
committerTed Kremenek <kremenek@apple.com>2008-03-28 16:09:38 +0000
commit8730e130ab77ae5739e6339e1544b4ca9ab28450 (patch)
tree382e43ee25bbd963d9fa704c576408e7079762e4
parent9630ec5b6785e5b6e1c71aeddcad05005beb7483 (diff)
Added skeleton checking for NSString's method initWithFormat: (do not pass nil). This won't be useful in most cases right now
because the analyzer isn't tracking expected types for an object, and [NSString alloc] just runs "id". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48917 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Analysis/BasicObjCFoundationChecks.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/Analysis/BasicObjCFoundationChecks.cpp b/lib/Analysis/BasicObjCFoundationChecks.cpp
index f6b4224f05..82cabaf7a3 100644
--- a/lib/Analysis/BasicObjCFoundationChecks.cpp
+++ b/lib/Analysis/BasicObjCFoundationChecks.cpp
@@ -209,12 +209,21 @@ bool BasicObjCFoundationChecks::AuditNSString(NodeTy* N,
switch (len) {
default:
break;
- case 8:
-
+ case 8:
if (!strcmp(cstr, "compare:"))
return CheckNilArg(N, 0);
break;
+
+ case 15:
+ // FIXME: Checking for initWithFormat: will not work in most cases
+ // yet because [NSString alloc] returns id, not NSString*. We will
+ // need support for tracking expected-type information in the analyzer
+ // to find these errors.
+ if (!strcmp(cstr, "initWithFormat:"))
+ return CheckNilArg(N, 0);
+
+ break;
case 16:
if (!strcmp(cstr, "compare:options:"))
@@ -234,7 +243,7 @@ bool BasicObjCFoundationChecks::AuditNSString(NodeTy* N,
return CheckNilArg(N, 0);
break;
-
+
case 29:
if (!strcmp(cstr, "compare:options:range:locale:"))
return CheckNilArg(N, 0);