<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>Hi, Prashant. check::BranchCondition is only intended to be used for boolean branches, since the first argument is the conditional expression used for branching.* With a switch statement, that no longer makes sense. That said, you're right that there's currently no callback for a switch statement. The right thing to do here is probably to run pre-statement checks on the terminator statement in the CFG when it's not a logical expression or conditional expression, so that the nomal check::PreStmt<SwitchStmt> would work.</div><div><br></div><div>Please file a bug at <a href="http://llvm.org/bugs/">llvm.org/bugs/</a>, or alternately submit a patch to <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a> for review (and CC me or Anna).</div><div><br></div><div>Sorry for the trouble,</div><div>Jordan</div><div><br></div><div>* Implementation detail: it's a Stmt, not an Expr, because we stash the branch info for an Objective-C for-in loop on the loop statement itself. But it's still a boolean value.</div><div><br></div><div><br></div><br><div><div>On Nov 28, 2013, at 5:04 , Prashant Purohit <<a href="mailto:Prashant.Purohit@kpit.com">Prashant.Purohit@kpit.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div lang="EN-IN" link="blue" vlink="purple" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class="WordSection1"><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">Hi all,</span></div><p class="MsoNormal" style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);"> </span></p><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">I am new to Clang Static Code analyzer internals.</span></div><p class="MsoNormal" style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);"> </span></p><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">Currently, I am trying to get all the branch conditions in a function using ‘check::BranchCondition’ call back function.</span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">I am successful in detecting all the branch conditions like if, while, do..while, for and ternary operator condition except switch condition.</span></div><p class="MsoNormal" style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);"> </span></p><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">I have checked this with already existing checks (e.g.- DumpTraversal) which uses ‘check::BranchCondition’ call back function, these checks</span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">also do not detect ‘switch’ statements.</span></div><p class="MsoNormal" style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);"> </span></p><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">Kindly help me in getting switch statements using ‘check::BranchCondition’ call back function.</span></div><p class="MsoNormal" style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);"> </span></p><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">Thanks,</span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span lang="EN-US" style="color: rgb(31, 73, 125);">Prashant S. Purohit</span></div></div>This message contains information that may be privileged or confidential and is the property of the KPIT Technologies Ltd. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message. KPIT Technologies Ltd. does not accept any liability for virus infected mails. _______________________________________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@cs.uiuc.edu" style="color: purple; text-decoration: underline;">cfe-dev@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" style="color: purple; text-decoration: underline;">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a></div></blockquote></div><br></body></html>