[cfe-commits] [patch] new clang-analyzer checker that verifies ObjC API usage in UIViewController subclasses [v2]

Julian Mayer julian at corecode.at
Sat Oct 13 03:49:19 PDT 2012


hello

attached is a new clang-analyzer checker that verifies ObjC API usage in UIViewController subclasses, more specifically if implemented methods correctly call the superclass implementations in methods where this is mandatory (and omitting these calls can lead to real and difficult-to-find bugs).

the code is largely based on the dealloc checker which includes the check for a missing super call as part its functions.

the code currently only checks UIViewController subclasses but should be extended to be more general in the future, there are a variety of classes in the iOS and Mac OS X APIs that require some methods in their subclass implementations to either call super or not call super. the ToDo list in this regard is at the bottom of the file.

attached is the new checker (CheckViewController.cpp), the diff to the changed files Checkers.td and CMakeLists.txt and a new test case.

please comment (and CC me) or commit.

UPDATE: i've modified the patch according to feedback on the IRC channel
• better adherance to the llvm coding standards (tabs, linewidth, indentation)
• don't use std::vector for static method selector name list
• added test case to verify functionality
• provide correct method name in diagnostic output
• provide correct source location in diagnostic output
• removed check for rare multi-arg selector transistionViewController* because checking multi-arg selectors doesn't seem to work yet

bye, julian

-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.diff
Type: application/octet-stream
Size: 1195 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121013/751ff201/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: viewcontroller.m
Type: application/octet-stream
Size: 4876 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121013/751ff201/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CheckViewController.cpp
Type: application/octet-stream
Size: 6271 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121013/751ff201/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4885 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121013/751ff201/attachment.bin>


More information about the cfe-commits mailing list