balazske marked 3 inline comments as done.
balazske added inline comments.
================
Comment at: clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp:189-190
+  // Check if error was generated.
+  if (C.isDifferent())
+    return;
+
----------------
baloghadamsoftware wrote:
> balazske wrote:
> > NoQ wrote:
> > > That's actually one more good reason to move all `checkNullStream` to 
> > > `PreCall`: less spaghetti. The same checker should feel free to subscribe 
> > > for the same function in multiple different callbacks and do different 
> > > things in them.
> > > 
> > > Rule of a thumb (i'm not sure if it's //always// applicable but it's 
> > > applicable to most "typical" checkers even if they aren't currently 
> > > written this way):
> > > 1. Pre-condition checking goes in PreCall;
> > > 2. Modeling that affects everybody goes in evalCall;
> > > 3. Checker's internal bookkeeping goes in PostCall.
> > > 
> > Precondition (check for NULL stream) can go into PreCall. Probably the 
> > bookkeeping task is more difficult to do, if the state is split we have 
> > already the different states available in `evalCall` but need to check the 
> > state in `postCall`.
> @NoQ +1 I completely agree: All precondition checks in this checker should be 
> moved into `PreCall`. I would even go further: separate the checker into a 
> `StreamModeling` which models the calls using `evalCall` and `StreamChecker` 
> which does the checks. However, these NFCs should be done in subsequent 
> patches, not this one.
Does the setting of new state (`State->set<StreamMap>`) belong to the 
"modeling" (`evalCall`) or "checker" (in the `postCall`) part?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69948/new/

https://reviews.llvm.org/D69948



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to