branchrust_reboot/main/hackweek_pool_analyzercancel
16 Commits over 0 Days - ∞cph!
Update: PoolAnalyzer - switch to release version
- Release binary built from b189abf6
Tests: internal unit tests, started unity and ran compile simulator
Bugfix: fix 21 incorrect calls to Pool.Free instead of Dispose
Tests: compiled all modes in editor, built standalone C and S
Update: PoolAnalyzer - added detections for IProto.Dispose not being called and calling Pool.FreeUnsafe instead of Pool.Free
- debug binary build from b189abf6 (moved to new repo)
Reported a bunch of warnings, going through them separately
Tests: unit tests + started unity
Bugfix: fixing ~24 missing Pool.Free
Tests: editor compile test, built C and S standalones
Buildfix: undefine local GetFromGrid method when in None mode
Tests: None builds
Update: PoolAnalyzer - support ArgList syntax in ObjCreationSyntax
- debug bin built from 0fbab248
C+S Editor now boots! Now to check individual modes
Tests: unit tests + started editor
Update: PoolAnalyzer - further reduce false-positives
- better escapes for await, try blocks, using statements
- debug bin built from a2005dd2
Only 2 false-positives remaining in C+S
Tests: unit tests and started unity
Update: PoolAnalyzer - in cases of assignment, scan all block hierarchy up to local var declaration block
- debug binary built from cb708ddf
Down to 15 confirmed false-positives (5 different types)
Tests: unit tests + started unity
Update: PoolAnalyzer - check finally and using blocks
- debug binary built from b28334fc
Down to 48 potentially false-positive errors
Tests: unit tests + started unity
Update: PoolAnalyzer - more escape cases
- recursively process expression statements to detect deeply nested escape cases
- add support for field initializer escapes
- debug binary built from e61378eb
Currently detecting 54 errors (still a bunch of false-positives present)
Tests: unit tests + started unity
Update: PoolAnalyzer - escape analysis if assigned to a variable as part of method arg list
- debug binary build from 8b392070
Currently seeing 60 errors in C+S (3 valid, 2 false-positives, rest unknown).
Tests: unit tests + launched unity
Update: PoolAnalyzer - handle more valid cases
- added support for Dispose handling
- added if(obj != null) Free(ref obj) handling
- added support for using directives (both scoped and inline)
I give up on trying to handle local data flow involving pooled objects - there's just too much work here
Tests: unit tests + started unity (our Pooling unit tests no longer flag false-positives, this was kind of funny)
Update: PoolAnalyzer - escape a bit more
- don't analyze statements before Pool.Get call
- escape analysis when pooled object is returned out of method
- debug binary built from b8b556ae
Tests: unit tests + started unity. still a bunch of false-positives, but found first legit bug
New: PoolAnalyzer - validates code around Pool usage
- debug assembly built from e7281f13
Tests: detected errors, but those are false-positives (return of pooled object instance)