[PATCH] D53076: [analyzer] Enhance ConditionBRVisitor to write out more information
George Karpenkov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 24 10:35:04 PDT 2018
george.karpenkov requested changes to this revision.
george.karpenkov added inline comments.
This revision now requires changes to proceed.
================
Comment at: include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:80
typedef llvm::ImmutableMap<void*, void*> GenericDataMap;
+ typedef llvm::DenseMap<const Stmt *, StringRef> ConstraintMap;
----------------
Generally, `StringRef`'s shouldn't be stored in containers, as containers might outlive them.
It might be fine in this case, but I would prefer to be on the safe side and just use `std::string`
================
Comment at: include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:238
+ /// message on that constraint being changed.
+ bool isChangedOrInsertConstraint(ConstraintMap &Constraints, const Stmt *Cond,
+ StringRef Message) const {
----------------
whisperity wrote:
> `insertOrUpdateContraintMessage`
>
> and mention in the documentation that it returns whether or not the actual insertion or update change took place
If constraints is now a property of the visitor, shouldn't this method with the typedef above be moved to the visitor as well?
================
Comment at: include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:244
+ if (I == Constraints.end() || !Message.equals(I->second)) {
+ Constraints[Cond] = Message;
+ return true;
----------------
Isn't that equivalent to `Constraints.insert(make_pair(Cond, Message)).second` ?
I think I have written that before.
================
Comment at: lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:2232
+ const ExplodedNode *N, BugReport &BR) {
+ Constraints.clear();
+}
----------------
It does not seem necessary, because a new copy of the visitor is created for each new bug report.
https://reviews.llvm.org/D53076
More information about the cfe-commits
mailing list