I'm a compiler engineer at ByteDance. Concentrate on performance optimization and program analysis.
- User Since
- Jul 19 2017, 4:18 AM (194 w, 6 d)
Sun, Apr 11
Dec 14 2020
Nov 22 2019
Good catch, the fix is reasonable to me. However, I'm no longer wok on the analyzer now, maybe you can add @NoQ Or some other active reviewers to review the code.
Jan 27 2019
Dec 9 2018
Dec 6 2018
Dec 4 2018
Please add more context using the -U option, like git diff -U99999 ....
Nov 26 2018
We can land this change this time or do the cleaning job in other patches in the future, it's all up to you guys, the active clangd contributors :).
Use more concise form.
Nov 25 2018
Nov 24 2018
Nov 22 2018
Thank you for doing the cleaning that no one else is interested in! Comments is inline below.
Nov 16 2018
The "moved-from" terminology we adopt here still feels a bit weird to me, but i don't have a better suggestion, so i just removed the single-quotes so that to at least feel proud about what we have.
I am personally fine with this terminology, this checker corresponds to the cert rule EXP63-CPP. Do not rely on the value of a moved-from object, and moved from is also used in many places in CppCoreGuidelines.
Nov 14 2018
Nov 12 2018
I'm totally fine with this patch personally. However I am not familiar with this part, so can't give substantial help :).
Nov 1 2018
Sorry for the long delay for this patch! The implementation is fine for me. However, I'm the newbie on clang diagnostics and have no further insight into this checker. @aaron.ballman may have more valuable insights into this checker.
Oct 29 2018
In addition, clang/lib/StaticAnalyzer/README.txt and other related docs in clang/lib/docs/analyzer are also out of date.
Oct 23 2018
Oct 10 2018
Oct 9 2018
Greate idea! If we can enrich this list, it will not only help the reviewer, but also help beginners, like me, avoid some pitfalls when developing a new checker.
Aug 29 2018
Thank you for digging in to delete that meaningless constructor, NoQ! And sorry for my technology debt : ).
Aug 23 2018
Aug 22 2018
Aug 21 2018
@xazax.hun What do you think?
Aug 17 2018
- Since we have enhanced the ability of CallDescription, remove the helper method isCalledOnStringObject().
Aug 13 2018
Aug 7 2018
Jul 26 2018
@xazax.hun Thanks for your tips! After some investigation, MatchFinder::match just traverse one ASTNode, that means match(namedDecl(HasNameMatcher())) and match(namedDecl(matchesName())) both not traverse children. So there are three ways to match the specified AST node.
Jul 4 2018
Thanks for your review, NoQ!
Jun 29 2018
Jun 25 2018
Sorry for the long long delay, I was on the Dragon Boat Festival a few days ago.
Jun 13 2018
- Use hasName matcher to match the qualified name.
Jun 12 2018
Jun 11 2018
Remove useless header files for testing.
The implementation is not complicated, the difficulty is that there is no good way to get the qualified name without template arguments. For std::basic_string::c_str(), its qualified name may be std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::c_str, it is almost impossible for users to provide such a name. So one possible implementation is to use std, basic_string and c_str to match in the std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::c_str sequentially.
Jun 9 2018
Jun 8 2018
LGTM, @NoQ May have further feedback. Thanks!
I didn't test the code, but the code seems correct. Thanks!
Jun 7 2018
This update consists of two parts
- Make rsplit(char) reuse rsplit(StringRef).
- Make split(char) reuse split(StringRef).
Jun 4 2018
Jun 3 2018
May 28 2018
May 27 2018
May 26 2018
May 21 2018
May 15 2018
- According to NoQ's suggestion, use assumeZero() instead of isZeroConstant() to determine whether the value is 0.
- Add test memset26_upper_UCHAR_MAX() and memset27_symbol()
- Since memset( void *dest, int ch, size_t count) will converts the value ch to unsigned char, we call evalCast() accordingly.
May 10 2018
May 5 2018
- Since there is no perfect way to handle the default binding of non-zero character, remove the default binding of non-zero character. Use bindDefaulrZero() instead of overwriteRegion() to bind the zero character.
- Reuse assume() instead of isZeroConstant() to determine whether it is zero character. The purpose of this is to be able to set the string length when dealing with non-zero symbol character.
May 4 2018
Thank you, Artem! I did not consider this common situation. This patch does not really support this situation, in this patch the value of x will be 1, it's not correct!
May 3 2018
- fix typos
- code refactoring, add auxiliary method memsetAux()
- according to a.sidorin's suggestions, remove the useless state splitting.
- make StoreManager::overwriteRegion() pure virtual
May 2 2018
Sorry for the long delay, I have just finished my holiday.
Apr 27 2018
Apr 25 2018
Since BugReport::addVisitor() has checks for the null Visitor, remove the checks before BugReport->addVisitor().
Apr 24 2018
Apr 22 2018
Thanks for your review, george! TaintBugVisitor is an utility to add extra information to illustrate where the taint information originated from. There are several checkers use taint information, e.g. ArrayBoundCheckerV2.cpp, in some cases it will report a warning, like warning: Out of bound memory access (index is tainted). If TaintBugVisitor moves to BugReporterVisitors.h, ArrayBoundCheckerV2 can add extra notes like Taint originated here to the report by adding TaintBugVisitor.
Apr 18 2018
Test files for initialization missing? : )
Apr 17 2018
Apr 16 2018
Apr 14 2018
Apr 13 2018
Apr 11 2018
- Move the CXXThisRegion's check to LoopWidening.cpp
- Use isa<CXXThisRegion>(R) instead of CXXThisRegion::classof(R).
Apr 10 2018
Apr 2 2018
Thank you for your reminding, I overlooked this point. However for non-concrete character, the symbol value, if we just invalidate the region, the constraint information of the non-concrete character will be lost. Do we need to consider this?
Mar 30 2018
Fix typo, unsinged -> unsigned
According to @NoQ's suggestion, remove the duplicated code.
Thanks for your review, NoQ!