vsavchenko added a comment. Good job, great to see how you are going through the whole list of methods!
As for the patch, some tests and COMMENTS will be nice. Also, I think that for a checker that models quite a lot of functions and methods, we need to follow the pattern: if (isMethodA(...)) { return handleMethodA(...); } if (isMethodB(...)) { return handleMethodB(...); } ... however small implementations for those methods are. It will give fast insight into which methods are actually supported. ================ Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:86 +bool hasStdClassWithName(const CXXRecordDecl *RD, + const SmallVectorImpl<StringRef> &Names) { + if (!RD || !RD->getDeclContext()->isStdNamespace()) ---------------- When you change those vectors of names to global arrays, we can change it to `ArrayRef` to be more idiomatic LLVM code. ================ Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:111 + return hasStdClassWithName( + RD, SmallVector<StringRef, 3>{"shared_ptr", "unique_ptr", "weak_ptr"}); +} ---------------- This is a compile-time constant, I don't think we should construct it every time in runtime. Global array of three names is totally fine. ================ Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:194 + const auto *RD = E->getType()->getAsCXXRecordDecl(); + return hasStdClassWithName(RD, SmallVector<StringRef, 1>{"basic_ostream"}); +} ---------------- Same goes here Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105421/new/ https://reviews.llvm.org/D105421 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits