[PATCH] D10892: warning when inner condition is identical

Kim Gräsman kim.grasman at gmail.com
Thu Jul 9 11:40:54 PDT 2015


kimgr added a comment.

Some style nits and a question around the purpose of `Sr`. It doesn't appear to do what I thought it would.

I'll leave further review in the hands of owners, I'm just passing through.


================
Comment at: lib/StaticAnalyzer/Checkers/IdenticalExprChecker.cpp:119
@@ +118,3 @@
+      const IfStmt *InnerIf = dyn_cast<IfStmt>(*CS->body_begin());
+      if (InnerIf && isIdenticalStmt(AC->getASTContext(), I->getCond(), InnerIf->getCond(), false)) {
+        SourceRange Sr = I->getCond()->getSourceRange();
----------------
Could you say /*IgnoreSideEffects=*/ false for the last param, so it's more obvious that conditions with side effects are not considered?

================
Comment at: lib/StaticAnalyzer/Checkers/IdenticalExprChecker.cpp:120
@@ +119,3 @@
+      if (InnerIf && isIdenticalStmt(AC->getASTContext(), I->getCond(), InnerIf->getCond(), false)) {
+        SourceRange Sr = I->getCond()->getSourceRange();
+        PathDiagnosticLocation ELoc(InnerIf->getCond(), BR.getSourceManager(), AC);
----------------
Can you name this after its purpose? Something like `OriginalCondRange`...?

================
Comment at: lib/StaticAnalyzer/Checkers/IdenticalExprChecker.cpp:125
@@ +124,3 @@
+          "inner condition is identical to previous condition",
+          ELoc, Sr);
+      }
----------------
Is the Sr used for the note, and intended to point to the first if-statement? In your posted output the warning and the note both have the same location, and it would be neat if they pointed to the respective stmts.

================
Comment at: test/Analysis/identical-expressions.cpp:1544
@@ +1543,3 @@
+
+  // todo: should warn here. the warning is currently not written because there
+  // is code between the conditions.
----------------
s/todo/FIXME/

Use proper sentence casing in comments.

s/written/emitted/ ?

================
Comment at: test/Analysis/identical-expressions.cpp:1554
@@ +1553,3 @@
+void test_nowarn_inner_if_1(int x) {
+  // dont warn when condition has side effects
+  if (x++ == 1) {
----------------
s/dont/Don't/

End sentence with a full stop.

================
Comment at: test/Analysis/identical-expressions.cpp:1560
@@ +1559,3 @@
+
+  // dont warn when x is changed before inner condition
+  if (x < 10) {
----------------
s/dont/Don't/ and end with a full stop.


http://reviews.llvm.org/D10892







More information about the cfe-commits mailing list