Clang Static Analysis vs AppCode Project Inspection Question
I'm relatively new to iOS development and I'm looking for some enligthenment: My team builds our project with static analysis enabled for debug builds in XCode. To evaluate AppCode's inspection feature, I performed an inspection on the entire project.
While I expected AppCode's inspection to be good, I did not expect that it would find 50+ instances of ivars that were not being deallocated correctly. We verified that AppCode had correctly identified the issue, in a couple cases this resolved known memory leaks.
Should the clang static analyzer have caught these?
I'm hoping its because some project settings haven't been correctly set. As I'd expect the clang static analyzer to at least flag missing de-allocations.
In any case props to the JB team for an excellent product. This feature alone made my stock go up in my new company. More importantly, it's generating some sales for JB.
请先登录再写评论。
Well I can partially answer the question. According to the Clang site it should have identified this issue:
In an attempt to understand why they aren't being flagged I've tried running Clang on the project from the command-line but it encounters the following error:
clang: error: unsupported option '--serialize-diagnostics'
Any pointers to sites or documentation that will help me understand Clang and how to use it properly would be appreciated.
TIA
Got a response on this from the Clang mailing list:
So keep in mind at least one of the features supported by Clang is turned off. I noticed a couple other issues flagged by AppCode that are supposed to be flagged by Clang but are not. (Un-used ivars for example.) My team and company had a false sense of security with XCode's static analysis feature and I'm digging through Clang's archives and bugzilla to determine exactly what features it provides that we can truely rely on.
Again, great job JetBrains! AppCode's static analysis pays for the license, easily.