Page MenuHomePhabricator

NoQ (Artem Dergachev)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 3 2015, 9:16 AM (171 w, 2 d)

Recent Activity

Yesterday

NoQ added inline comments to D55730: [analyzer] MoveChecker Pt.9: Add a "peaceful" mode in which it finds only 100% authentic bugs..
Sat, Dec 15, 5:44 PM

Fri, Dec 14

NoQ reopened D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..
Fri, Dec 14, 7:33 PM
NoQ added a comment to D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..

Reverted in rC349233 - fails on a Windows buildbot (http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/2642/steps/annotate/logs/stdio).

Fri, Dec 14, 7:03 PM
NoQ added a comment to D55458: [analyzer] ObjCContainers: Track index values..

These are boring, i guess i just commit.

Fri, Dec 14, 6:05 PM
NoQ added a parent revision for D38675: [analyzer] MoveChecker Pt.10: Move the checker out of alpha state.: D55566: [analyzer] LiveVariables: Fix a zombie expression problem, add testing infrastructure..
Fri, Dec 14, 5:31 PM
NoQ added a child revision for D55566: [analyzer] LiveVariables: Fix a zombie expression problem, add testing infrastructure.: D38675: [analyzer] MoveChecker Pt.10: Move the checker out of alpha state..
Fri, Dec 14, 5:31 PM
NoQ added a parent revision for D38675: [analyzer] MoveChecker Pt.10: Move the checker out of alpha state.: D55730: [analyzer] MoveChecker Pt.9: Add a "peaceful" mode in which it finds only 100% authentic bugs..
Fri, Dec 14, 5:31 PM
NoQ added a child revision for D55730: [analyzer] MoveChecker Pt.9: Add a "peaceful" mode in which it finds only 100% authentic bugs.: D38675: [analyzer] MoveChecker Pt.10: Move the checker out of alpha state..
Fri, Dec 14, 5:31 PM
NoQ edited reviewers for D38675: [analyzer] MoveChecker Pt.10: Move the checker out of alpha state., added: a_sidorin, rnkovacs, Szelethus; removed: zaks.anna.
Fri, Dec 14, 5:28 PM
NoQ updated the diff for D38675: [analyzer] MoveChecker Pt.10: Move the checker out of alpha state..

Rebase!

Fri, Dec 14, 5:27 PM
NoQ commandeered D38675: [analyzer] MoveChecker Pt.10: Move the checker out of alpha state..
Fri, Dec 14, 5:26 PM
NoQ added a parent revision for D55730: [analyzer] MoveChecker Pt.9: Add a "peaceful" mode in which it finds only 100% authentic bugs.: D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..
Fri, Dec 14, 5:20 PM
NoQ added a child revision for D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move.: D55730: [analyzer] MoveChecker Pt.9: Add a "peaceful" mode in which it finds only 100% authentic bugs..
Fri, Dec 14, 5:20 PM
NoQ retitled D55730: [analyzer] MoveChecker Pt.9: Add a "peaceful" mode in which it finds only 100% authentic bugs. from [analyzer] MoveChecker Pt.9: Add a "peaceful" to [analyzer] MoveChecker Pt.9: Add a "peaceful" mode in which it finds only 100% authentic bugs..
Fri, Dec 14, 5:19 PM
NoQ created D55730: [analyzer] MoveChecker Pt.9: Add a "peaceful" mode in which it finds only 100% authentic bugs..
Fri, Dec 14, 5:16 PM
NoQ added inline comments to D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..
Fri, Dec 14, 4:16 PM
NoQ accepted D54975: [analyzer] Generalised the SMT state constraints .
Fri, Dec 14, 3:03 PM
NoQ added a comment to D55697: [analyzer] Assume that we always have a SubEngine available.

We could also add an assert to getOwningEngine I guess.

Fri, Dec 14, 2:25 PM · Restricted Project
NoQ accepted D55697: [analyzer] Assume that we always have a SubEngine available.

Yup, squash these! Even if there was a plan to use ProgramState separately for some other sort of analysis that doesn't involve a sub-engine, it is currently long forgotten.

Fri, Dec 14, 2:25 PM · Restricted Project
NoQ accepted D55701: [analyzer] Pass the correct loc Expr from VisitIncDecOp to evalStore.

Thanks! Neat test.

Fri, Dec 14, 2:23 PM
NoQ updated the diff for D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..

Rebase.

Fri, Dec 14, 1:28 PM
NoQ added inline comments to D55387: [analyzer] MoveChecker Pt.7: NFC: Misc refactoring..
Fri, Dec 14, 1:27 PM
NoQ updated the diff for D55387: [analyzer] MoveChecker Pt.7: NFC: Misc refactoring..

Fxd.

Fri, Dec 14, 1:27 PM
NoQ added inline comments to D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes..
Fri, Dec 14, 12:56 PM
NoQ accepted D53713: Add extension to always default-initialize nullptr_t..

I approve this for Static Analyzer. As long as this is the correct thing to do in the compiler, Static Analyzer should ideally behave similarly to the compiler. Exposing portability bugs that would show up on other compilers is generally less important than behaving similarly to Clang itself.

Fri, Dec 14, 12:47 PM
NoQ added a comment to D55707: Update to SARIF 11-28.

Sure, np.

Fri, Dec 14, 12:45 PM
NoQ accepted D55707: Update to SARIF 11-28.

Yup, looks good, and i keep passively cheering for this project to be successful.

Fri, Dec 14, 12:23 PM
NoQ added a comment to D46421: [analyzer][CrossTU] Extend CTU to VarDecls with initializer.

It seems like a good idea to not do that, since non-const values are not used. It might become useful if we ever do some kind of straight line execution from static initialization to main.
However for structs it is enough if one of their fields is declared const.

Fri, Dec 14, 12:02 PM

Thu, Dec 13

NoQ created D55683: [analyzer] Tests for scan-build?.
Thu, Dec 13, 3:53 PM
NoQ added a comment to D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..

Hm. I wonder if it would also make sense to model e.g. the get method to return nullptr for moved from smart ptrs. This could help null dereference checker and also aid false path prunning.

Thu, Dec 13, 3:34 PM
NoQ updated the summary of D55680: [analyzer] ObjCDealloc: Fix a crash when a class attempts to deallocate another class..
Thu, Dec 13, 3:19 PM
NoQ created D55680: [analyzer] ObjCDealloc: Fix a crash when a class attempts to deallocate another class..
Thu, Dec 13, 3:18 PM
NoQ created D55671: [analyzer] Don't pretend that unknown block calls have one null parameter..
Thu, Dec 13, 2:05 PM
NoQ accepted D55665: Output to SARIF from scan-build.

Thanks, looks perfectly sane to me!

Thu, Dec 13, 12:37 PM

Wed, Dec 12

NoQ added a comment to D54429: [analyzer] Creating standard Sphinx documentation.

I poked Devin offline. It kinda seems to both of us that Sphinx is great for documentation that is updated regularly, but our fancy front page should probably stay. Similarly to how we still have the llvm.org front page, despite all the documentation. It's kinda atmospheric and friendly and people like it and/or are used to it.

Wed, Dec 12, 10:07 PM · Restricted Project
NoQ added a comment to D54921: [analyzer] Remove memoization from RunLoopAutoreleaseLeakChecker.

Added a test in rC349000.

Wed, Dec 12, 5:35 PM
NoQ added a comment to D53280: [analyzer] Emit an error for invalid -analyzer-config inputs.

I guess the solution would be to check whether there are any user supplied flags with "analyze" substring, and add the compatibility flag then. It is possible if not probable that a non-static-analyzer related flag with a name like that will eventually be added, but I guess we can live with it.

Wed, Dec 12, 1:35 PM

Tue, Dec 11

NoQ added a comment to D54921: [analyzer] Remove memoization from RunLoopAutoreleaseLeakChecker.

That is, it is modified within the recursive call.

Tue, Dec 11, 12:23 PM
NoQ added a comment to D54921: [analyzer] Remove memoization from RunLoopAutoreleaseLeakChecker.

I think that it is modified, at least, when Memoization[C] is evaluated. The object needs to be created and put into the map in order to obtain a reference to it.

Tue, Dec 11, 12:22 PM
NoQ added a comment to D54921: [analyzer] Remove memoization from RunLoopAutoreleaseLeakChecker.

Hmm, i think i get it. Cached is a reference. Changing Memoization will invalidate references because DenseMap doesn't provide the respective guarantee.

Tue, Dec 11, 12:13 PM
NoQ updated the diff for D55566: [analyzer] LiveVariables: Fix a zombie expression problem, add testing infrastructure..

Add documentation, fix checker help message.

Tue, Dec 11, 11:57 AM
NoQ created D55566: [analyzer] LiveVariables: Fix a zombie expression problem, add testing infrastructure..
Tue, Dec 11, 11:42 AM

Mon, Dec 10

NoQ accepted D54921: [analyzer] Remove memoization from RunLoopAutoreleaseLeakChecker.

Let's commit without a test because of the urgency, and add the test soon.

Mon, Dec 10, 5:11 PM
NoQ added a comment to D55424: [analyzer] Supply all checkers with a shouldRegister function.

Should we also pass CheckerManager into shouldRegister...? Or is it entirely useless?

Mon, Dec 10, 4:51 PM
NoQ accepted D55528: [analyzer] Resolve another bug where the name of the leaked object was not printed properly.

Thx!

Mon, Dec 10, 3:49 PM
NoQ added inline comments to D55530: [analyzer] Display a diagnostics when an inlined function violates its os_consumed summary.
Mon, Dec 10, 3:33 PM
NoQ accepted D55530: [analyzer] Display a diagnostics when an inlined function violates its os_consumed summary.

Looks great!

Mon, Dec 10, 3:19 PM

Fri, Dec 7

NoQ accepted D55465: Stop tracking retain count of OSObject after escape to void * / other primitive types.

Sounds reasonable.

Fri, Dec 7, 5:11 PM
NoQ added a comment to D54438: [analyzer] Reimplement dependencies between checkers.

Also you might need to rebase on top of D55400.

Fri, Dec 7, 2:59 PM
NoQ updated the diff for D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..

Fix typo.

Fri, Dec 7, 2:53 PM
NoQ added a comment to D54438: [analyzer] Reimplement dependencies between checkers.

Generally, because the primary user of checker names is clang-tidy, the correct name to display is the name of the specific checker that the user needs to disable in order to get rid of the warning.

Fri, Dec 7, 2:50 PM
NoQ accepted D54438: [analyzer] Reimplement dependencies between checkers.

I'm seeing no problems with this patch and i'm happy that we're replacing hacks with well-defined patterns :)

Fri, Dec 7, 2:46 PM
NoQ accepted D55429: [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker.

Aha, ok, so what's the final procedure now to register a checker that's artificially split in two? Something like this, right?

def CommonModel : Checker<"Common">,
  HelpText<"Doesn't emit warnings but models common stuff.">;
Fri, Dec 7, 2:42 PM
NoQ accepted D55424: [analyzer] Supply all checkers with a shouldRegister function.

Yeah, this part looks easy :)

Fri, Dec 7, 2:25 PM
NoQ added inline comments to D55425: [analyzer] Split unix.API up to UnixAPIMisuseChecker and UnixAPIPortabilityChecker.
Fri, Dec 7, 2:22 PM
NoQ accepted D55425: [analyzer] Split unix.API up to UnixAPIMisuseChecker and UnixAPIPortabilityChecker.

Nice!

Fri, Dec 7, 2:10 PM
NoQ updated the diff for D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..

Fxd!

Fri, Dec 7, 2:01 PM
NoQ updated the diff for D55387: [analyzer] MoveChecker Pt.7: NFC: Misc refactoring..

Fxd.

Fri, Dec 7, 1:58 PM
NoQ added inline comments to D55458: [analyzer] ObjCContainers: Track index values..
Fri, Dec 7, 1:47 PM
NoQ created D55458: [analyzer] ObjCContainers: Track index values..
Fri, Dec 7, 1:46 PM
NoQ accepted D55400: [analyzer] Move out tracking retain count for OSObjects into a separate checker.
Fri, Dec 7, 12:22 PM

Thu, Dec 6

NoQ added a comment to D55007: [Analyzer] Constraint Manager - Calculate Effective Range for Differences.

I just generally wish for a function that would return the most specific known range for the given arbitrary symbol. This is something we can put, for example, into visitor path notes.

Thu, Dec 6, 4:54 PM · Restricted Project
NoQ added inline comments to D55400: [analyzer] Move out tracking retain count for OSObjects into a separate checker.
Thu, Dec 6, 4:36 PM
NoQ added a comment to D54438: [analyzer] Reimplement dependencies between checkers.
  • ✔️ There are in fact a variety of checkers that contain subcheckers like MallocChecker, which I think is all good, but the concept that if a subchecker is enabled it only sort of registeres the main checker (in MallocChecker's case it enables modeling, but not reporting) is very hard to follow. I propose that all such checkers should clearly have a base, called something DynamicMemoryModeling, or IteratorModeling etc.
Thu, Dec 6, 4:23 PM
NoQ added a comment to D53701: [Analyzer] Record and process comparison of symbols instead of iterator positions in interator checkers.
In D53701#1315242, @NoQ wrote:

When using iterator adapters of the STL the bugs may also be filtered out by the analyzer if this option is enabled.

Thu, Dec 6, 4:12 PM · Restricted Project
NoQ added a comment to D53185: [analyzer] Implement a prototype checker for detecting Year 2038 related issues..

I think the idea is great, thanks!

Thu, Dec 6, 3:52 PM
NoQ added a parent revision for D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move.: D55387: [analyzer] MoveChecker Pt.7: NFC: Misc refactoring..
Thu, Dec 6, 3:03 PM
NoQ added a child revision for D55387: [analyzer] MoveChecker Pt.7: NFC: Misc refactoring.: D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..
Thu, Dec 6, 3:03 PM
NoQ created D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move..
Thu, Dec 6, 3:03 PM
NoQ added a parent revision for D55387: [analyzer] MoveChecker Pt.7: NFC: Misc refactoring.: D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes..
Thu, Dec 6, 2:59 PM
NoQ added a child revision for D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes.: D55387: [analyzer] MoveChecker Pt.7: NFC: Misc refactoring..
Thu, Dec 6, 2:59 PM
NoQ created D55387: [analyzer] MoveChecker Pt.7: NFC: Misc refactoring..
Thu, Dec 6, 2:59 PM
NoQ accepted D55385: [analyzer] RetainCountChecker: remove untested, unused, incorrect option IncludeAllocationLine.

Burn it.

Thu, Dec 6, 2:28 PM
NoQ updated the diff for D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes..

Add one more important case: std::optional. When moved, it moves the object within it into the new optional, if any. So the object is left in unspecified state, but the state of the optional itself is well-specified.

Thu, Dec 6, 2:16 PM
NoQ added inline comments to D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes..
Thu, Dec 6, 2:16 PM
NoQ updated the diff for D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies..

Fxd :)

Thu, Dec 6, 2:14 PM
NoQ accepted D55351: [analyzer] Fix an infinite recursion bug while checking parent methods in RetainCountChecker.

^^

Thu, Dec 6, 1:52 PM
NoQ added a comment to D55150: Emit warnings from the driver for use of -mllvm or -Xclang options..

Using -Xclang is the only way to pass options to the static analyzer, I don't think we should warn on it.

Well,, that seems unfortunate if we have the only supported interface for the static analyzer be an internal interface. Perhaps it can be given a different option? Even discounting this change, I that seems like it would be appropriate.

Thu, Dec 6, 12:15 PM

Wed, Dec 5

NoQ added inline comments to D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies..
Wed, Dec 5, 2:02 PM
NoQ added inline comments to D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies..
Wed, Dec 5, 2:00 PM
NoQ updated the diff for D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies..

Address comments :)

Wed, Dec 5, 2:00 PM
NoQ added inline comments to D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies..
Wed, Dec 5, 12:45 PM
NoQ updated the diff for D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes..

Convert the pointer to a reference.

Wed, Dec 5, 10:44 AM
NoQ added inline comments to D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes..
Wed, Dec 5, 10:44 AM

Tue, Dec 4

NoQ added a parent revision for D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes.: D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies..
Tue, Dec 4, 5:24 PM
NoQ added a child revision for D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies.: D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes..
Tue, Dec 4, 5:24 PM
NoQ created D55307: [analyzer] MoveChecker Pt.6: Suppress the warning for the few move-safe STL classes..
Tue, Dec 4, 5:24 PM
NoQ added a comment to D53280: [analyzer] Emit an error for invalid -analyzer-config inputs.

It's a flag that was removed but old soft doesn't know that it was removed, and it won't be fixed because it's old. I guess a typo would have caused the same problem.

Tue, Dec 4, 4:51 PM
NoQ added a comment to D53280: [analyzer] Emit an error for invalid -analyzer-config inputs.

Ugh. We broke backwards compatibility when an invalid -analyzer-config is specified but -analyze isn't specified. Yes, people are accidentally relying on that :/ :/ :/

Tue, Dec 4, 4:16 PM
NoQ added inline comments to D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies..
Tue, Dec 4, 12:14 PM
NoQ created D55289: [analyzer] MoveChecker Pt.5: Improve invalidation policies..
Tue, Dec 4, 12:12 PM

Mon, Dec 3

NoQ added a comment to D54563: [analyzer] MoveChecker Pt.4: Add a few more state reset methods..

Hmm, i shouldn't have included shrink_to_fit. It definitely keeps the object in unspecified state if it is already in unspecified state.

Mon, Dec 3, 7:39 PM
NoQ accepted D54466: [Analyzer] Iterator Checkers - Use the region of the topmost base class for iterators stored in a region.

Looks great, thanks!

Mon, Dec 3, 6:39 PM · Restricted Project
NoQ added a comment to D54560: [analyzer] MoveChecker Pt.3: Improve warning messages a bit..
In D54560#1302051, @MTC wrote:

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.

Double-checked - this terminology does indeed come from the Standard:

Mon, Dec 3, 5:50 PM
NoQ added a comment to D54563: [analyzer] MoveChecker Pt.4: Add a few more state reset methods..

I'm glad you brought this stuff up, found two more bugs to fix.

Mon, Dec 3, 5:03 PM
NoQ added inline comments to D54563: [analyzer] MoveChecker Pt.4: Add a few more state reset methods..
Mon, Dec 3, 4:43 PM
NoQ updated the diff for D54563: [analyzer] MoveChecker Pt.4: Add a few more state reset methods..

Add a TODO.

Mon, Dec 3, 4:32 PM
NoQ added a comment to D54563: [analyzer] MoveChecker Pt.4: Add a few more state reset methods..

This suggests to me that list1.splice(list1.begin(), std::move(list2)) leaves list2 in a valid, well-defined, but empty state.

Mon, Dec 3, 4:22 PM
NoQ added inline comments to D54560: [analyzer] MoveChecker Pt.3: Improve warning messages a bit..
Mon, Dec 3, 3:49 PM
NoQ updated the diff for D54560: [analyzer] MoveChecker Pt.3: Improve warning messages a bit..

Address comments!

Mon, Dec 3, 3:49 PM