1491 Commits (72a5a1e7ec4269c91fb9ed3af05f903e4923ff14)

Author SHA1 Message Date
Mehdi Bouaziz 4d5f8e6fea Small refactorings: Hoisting
6 years ago
Mehdi Bouaziz 48298f9bcc Small refactorings: Loop_control
6 years ago
Mehdi Bouaziz 21c9227529 Small refactorings: LoopInvariant
6 years ago
Mehdi Bouaziz 5a5a865bf4 Small refactorings: ReachingDefs
6 years ago
Mehdi Bouaziz 65499e36ce Small refactorings: Purity
6 years ago
Mehdi Bouaziz 52e8f73060 Small refactorings: Control
6 years ago
Mehdi Bouaziz 0185b76c3d Cost domain is not an abstract domain
6 years ago
Mehdi Bouaziz e3db5720ce [Cost] Always call substitute to record trace element
6 years ago
Mehdi Bouaziz 05ac5adfee Run Purity once
6 years ago
Mehdi Bouaziz 453cb1336c [inferbo] Make Bound type abtract
6 years ago
Mehdi Bouaziz b212f1ce6c [hoisting] Fix reporting logic
6 years ago
Mehdi Bouaziz 023d608530 [cost] Make it more Kind-generic
6 years ago
Ezgi Çiçek cd20abfc88 [cost] Add trace to symbols in polynomial bounds
6 years ago
Mehdi Bouaziz 3139ee5d46 [cost] Instantiate costs using formals not pname
6 years ago
Mehdi Bouaziz 7fa7ee4535 [cost] Report only after the analysis
6 years ago
Mehdi Bouaziz 7c688583e0 [cost] Simplify & optimize NodesBasicCost
6 years ago
Mehdi Bouaziz 17fc4ca5cf [cost] Simplify & optimize exit cost + threshold
6 years ago
Jules Villard 4c4bb84e2c [liveness] blacklist of dangerous classes
6 years ago
Dino Distefano b52f2eb4be Simulate record domain in cost analysis
6 years ago
Jules Villard f8338d8faf [clang] ignore `__attribute__((unused))` variable initialisations
6 years ago
Ezgi Çiçek ea486c59d8 [purity] Always show PURE_FUNCTION issues
6 years ago
Ezgi Çiçek 6e0682b463 [purity] Mark unmodeled functions as modifying global state
6 years ago
Ezgi Çiçek 50b1533921 [loop-invariance] Make InvariantModels based on ProcName
6 years ago
Ezgi Çiçek c72f381520 [purity] Refactor global writes and get rid of BottomLifting
6 years ago
Nikos Gorogiannis 374538a02f [crashcontext] die
6 years ago
Dino Distefano e6d2872a4e Using record data structure for the cost domain
6 years ago
Mehdi Bouaziz 1b8927badd [inferbo/cost] Do not produce inferbo issues on Cost and Purity analysis
6 years ago
Mehdi Bouaziz e4bb3c9d68 [inferbo] Only callee formals are needed
6 years ago
Mehdi Bouaziz 5ba8bbe08f [inferbo] Split summary
6 years ago
Mehdi Bouaziz 3fabbfdcad [inferbo] Split Analysis and Checker
6 years ago
Nikos Gorogiannis 764e9ee1be [AI] empty is not (necessarily) bottom
6 years ago
Mehdi Bouaziz 8a3592c34e [inferbo] Uncouple numerical analysis and numerical checks
6 years ago
Nikos Gorogiannis 9463b25702 [classloads] move sources to more appropriate location
6 years ago
Jules Villard 49ca4eeecd [HIL][disjunctive] allow underlying transfer function to return disjunctions
6 years ago
Jeremy Dubreil 87a8ddc8fa [nullsafe] merge the option names
6 years ago
Jules Villard 11eca94be7 [pulse] split PulseDomain.ml
6 years ago
Jules Villard 4c1ee2a485 [pulse] add traces to the domain
6 years ago
Jules Villard d9978bb897 [pulse] better pretty-printing of stacks
6 years ago
Mehdi Bouaziz 5d1a213f52 [Hil] Fix failure in exception node
6 years ago
Mehdi Bouaziz 85bab87d16 [cost] The first cost model is a log
6 years ago
Daiva Naudziuniene c09068e3bf [HIL] Preserve ExitScope location information in the translation from SIL
6 years ago
Daiva Naudziuniene 2a139a2220 [pulse] Fix operator= case with temporaries
6 years ago
Ezgi Çiçek b46f55d0bc [purity] Mark functions with empty modified params as pure
6 years ago
Mehdi Bouaziz 4343f9c8b2 [cost] Adds Log elements to polynomials
6 years ago
Mehdi Bouaziz 9f333bb433 [quandary] Different source kinds for endpoints
6 years ago
Jules Villard 9868f7f763 [pulse] warn on returning address of C++ temporary
6 years ago
Jules Villard db1814b1d1 [pulse] detect stack variable address escape
6 years ago
Jules Villard 1b79f13a18 [ownership] make heuristic for reporting on lambdas more shareable
6 years ago
Mehdi Bouaziz b3c8d1dc67 [HIL] Fix ExitScope
6 years ago
Ezgi Çiçek 89b73e554e [purity] Mark functions that write to global static vars as impure
6 years ago
Daiva Naudziuniene e2b5a6f941 [pulse] Allow taking address of a field of an invalid object
6 years ago
Mehdi Bouaziz 52e09aed13 [inferbo] Move get_formals from Domain to Procdesc
6 years ago
Daiva Naudziuniene 220d29766d [pulse] Model stack as a map from addresses of variables
6 years ago
Jules Villard 77179d2c5c [pulse] switch back to having a single abstract address per stack variable and heap location
6 years ago
Jules Villard 2a46a54060 [pulse] use the disjunctive domain and make it configurable
6 years ago
Jules Villard 156f5946c2 [HIL][pulse] add disjunctive domain
6 years ago
Jules Villard d9a014f71b [pulse] take array indices into account
6 years ago
Jules Villard 26d4a2d14f [HIL] simplify some functors around TransferFunctions
6 years ago
Jules Villard 65d031af66 [pulse] model lambda captures
6 years ago
Ezgi Çiçek 61b51b09db [hoisting] Rename hoisting message
6 years ago
Daiva Naudziuniene fcfb6cc361 [pulse] Model more std::vector functions that can invalid references to elements
6 years ago
Jules Villard 95fab102bf [pulse] do not destroy `this` even if asked to
6 years ago
Jules Villard 92c06e4f1f [HIL][4/4] array offsets are now HilExp.t
6 years ago
Jules Villard 1ee5877aa2 [HIL][3/4] remove compatibility AccessExpression.ml
6 years ago
Jules Villard d59e6ac1bf [HIL][2/4] move AccessExpression into HilExp
6 years ago
Jules Villard c89f7dc6ae [HIL][1/4] make `Access.t` polymorphic in the array access
6 years ago
Jeremy Dubreil 69af58506d [infer][nullsafe] rename the option to run the Nullsafe checker
6 years ago
Daiva Naudziuniene 332b150be9 [pulse] Model std::vector::reserve to invalidate references to elements
6 years ago
Jeremy Dubreil 81cfbe893f [infer][nullsafe] move all the Nullsafe related files in the same directory
6 years ago
Ezgi Çiçek 6017c2ec54 [cost] Fix control variables to pick up global vars in prune instructions
6 years ago
Sungkeun Cho 8a37d7caf1 [inferbo] Move get_formals
6 years ago
Daiva Naudziuniene 485b9c7bf5 [pulse] Abstract Location Set
6 years ago
Jules Villard ecbe8eca76 [pulse] remove nullptr model
6 years ago
Jules Villard 1c668c4d41 [SIL][preanalysis] add call flag for functions treating first formal as return
6 years ago
Jules Villard f3411a2203 [HIL] Add `ExitScope` instruction
6 years ago
Jules Villard e3b4a135ae [ai][pulse] fix minor html indentation issues
6 years ago
Jules Villard 55586b581b [preanalysis] do not delay killing variables taken by reference
6 years ago
Sungkeun Cho 5f925869b6 [infer] Translate more casts (unsigned int)
6 years ago
Mehdi Bouaziz b0b96b453b [cost] Do not need to load inferbo summary at calls
6 years ago
Ezgi Çiçek 305b2a74b8 [hoisting] Add new issue type for only invariant-modeled calls
6 years ago
Nikos Gorogiannis 6aba4b7ca2 [AI] kill astate type
6 years ago
Mehdi Bouaziz 8443cd73f6 [quandary] Allow sinks to have multiple taints
6 years ago
Mehdi Bouaziz 8de2b93cab [cost] Abstract type for polynomial degree
6 years ago
Nikos Gorogiannis bbd26769c9 [starvation] c++/Obj C deadlocks
6 years ago
Mehdi Bouaziz 5b3bca5562 [quandary] Allow sources to have multiple taints
6 years ago
Mehdi Bouaziz 8292323307 [inferbo/cost] Move Polynomials out of Itv.ml
6 years ago
Ezgi Çiçek 613c4a2848 [purity] Fix wrong invalidation of all params
6 years ago
Sungkeun Cho c8a17b9d0e [inferbo] Pass integer type widths to eval for cast
6 years ago
Sungkeun Cho 1486a5f105 [infer] Translate casting expressions of integer pointers
6 years ago
Dino Distefano 0d5a7028ab Removing unnecessary printing
6 years ago
Ezgi Çiçek 5fa89e2563 [purity] Disable clang
6 years ago
Ezgi Çiçek 6683c71f8b [purity, hoisting] Add more purity models for fblite and instagram
6 years ago
Mehdi Bouaziz 716caf91bf Add is_singleton_or_more to Set and Map
6 years ago
Ezgi Çiçek dde0067eec [purity] Don't report pure functions if hoisting mode is turned-on
6 years ago
Ezgi Çiçek f3d82a0230 [hoisting] Don't report functions modeled as VariantForHoisting but consider them invariant
6 years ago
Ezgi Çiçek 2f06fd768f [purity, hoisting] Keep track of modified args
6 years ago
Jules Villard 67ff14b4ed [pulse] record attributes inside memory cells instead of separately
6 years ago
Jules Villard 6f9028a77f [pulse] use WTO scheduler
6 years ago
Ezgi Çiçek d5a2198010 [hoisting] Make invalidation stop at already explored (var,node) pairs
6 years ago
Ezgi Çiçek ff722f975d [hoisting] Stop invalidation at loop head
6 years ago
Ezgi Çiçek 3fb1053b75 [hoisting] Invalidate arguments of type structs
6 years ago
Mehdi Bouaziz 9a4416f7d4 [quandary] String concatenation sanitizes class loading
6 years ago
Daiva Naudziuniene 86f52e52ed [pulse] Operator= copy assignment
6 years ago
Jules Villard f30e97f072 [pulse] add model for `std::vector::reserve` using additional memory attribute
6 years ago
Jules Villard 119d727d21 [pulse][minor] rename `AliasingDomain` to `Stack`
6 years ago
Jules Villard 1c8143898e [pulse] generalise "invalid" addresses as sets of attributes
6 years ago
Jules Villard 637018a330 [pulse] model some early exit functions
6 years ago
Jules Villard 9aa5582caa [clang] leave markers of variable initialization for pulse
6 years ago
Jules Villard 165cb1cf73 [pulse] back to sounder joins
6 years ago
Jules Villard 2fabf62b81 [pulse] underapproximate joins of array values
6 years ago
Jules Villard f400d4c5c5 [pulse] always register havoc'd variables
6 years ago
Jules Villard b8bb1f318f [pulse] reset abstract address fresh counter for each function
6 years ago
Josh Berdine 6a4d8b72f0 [doc] Fix some invalid/suspicious docstrings
6 years ago
Ezgi Çiçek 39335bb095 [hoisting] Invalidate all dependencies of invalidated parameters
6 years ago
Ezgi Çiçek affe3d1d60 [hoisting] Invalidate args of impure function calls
6 years ago
Daiva Naudziuniene 4954d3da4b [pulse] Model operator=
6 years ago
Daiva Naudziuniene 881bcb8fce [pulse] Clean up placement new model
6 years ago
Jules Villard 0a2cb44667 [pulse] introduce the more precise `VECTOR_INVALIDATION` issue type
6 years ago
Jules Villard 52bcce29b5 [access expressions] force clients to normalize when introducing `Dereference` and `AddressOf`
6 years ago
Jules Villard f627812541 [pulse] new issue type `USE_AFTER_DESTRUCTOR`
6 years ago
Jules Villard c6b2126c3f [pulse] forget about addresses that are invalid on only one side of a join
6 years ago
Daiva Naudziuniene 8b54879b07 [pulse] Constructors
6 years ago
Mehdi Bouaziz 17ff54f17a Logging: increase/decrease indent
6 years ago
Mehdi Bouaziz 18c45947da Logging.d_printf
6 years ago
Daiva Naudziuniene 1094a8224c [pulse] Invalidate object rather than address in destructor call
6 years ago
Jules Villard 5c30ea1051 [debug] print full types in instructions on error
6 years ago
Mehdi Bouaziz 10804588b2 New function pointer preanalysis without recursion
6 years ago
Jules Villard cf66ea0afb [pulse] havoc vector array on push_back
6 years ago
Jules Villard 6d6ac1d368 [pulse] do not use access paths as they forget about &/*
6 years ago
Jules Villard f5786c444b [pulse] use after free
6 years ago
Jules Villard 38ced865f3 [pulse] more issue types and add details about why locations get invalidated
6 years ago
Jules Villard 2c35ba51ea [pulse] move domain operations in their own submodule
6 years ago
Daiva Naudziuniene 5dab665fc2 [pulse] Model placement new
6 years ago
Daiva Naudziuniene 50da07e922 [pulse] Invalidate addresses for destructors
6 years ago
Jules Villard 497720386e [pulse] join of memory graphs
6 years ago
Jules Villard 3aa712c67a [pulse] define havoc and use in symbolic execution
6 years ago
Jules Villard a295d26f69 [pulse] do not propagate states with errors
6 years ago
Nikos Gorogiannis 4334225e67 [class loading] initial commit
6 years ago
Jules Villard 47867a8fdc [pulse] rename `Location` -> `Address` and better reporting
6 years ago
Jules Villard dd220a0fb4 [pulse] vector models
6 years ago
Jules Villard ad98ffa22b [pulse] more aggressive join
6 years ago
Mehdi Bouaziz 5e2d5c6f6b [Uninit][10/13] Other non-functional changes
6 years ago
Mehdi Bouaziz 81f31068e2 [Uninit][9/13] Check rhs using prestate
6 years ago
Mehdi Bouaziz 5ee9ea9e48 Fix warning
6 years ago
Dino Distefano 3d07754275 Giving cost 1 to procedure with empty body
6 years ago
Jules Villard 7bd4aaa819 [pulse] pulse models
6 years ago
Mehdi Bouaziz dffdd9c2ad [cost] Print constraints in HTML debug
6 years ago
Jules Villard d28d0528d1 [pulse] initial commit
6 years ago
Ezgi Çiçek 78a865b14e [hosting] Disable purity and cost callbacks temporarily
6 years ago
Ezgi Çiçek 99c2a6da8d [hoisting] Hoist only expensive pure functions
6 years ago
Josh Berdine e1d4aad487 [ocamlformat] upgrade ocamlformat to 0.8
6 years ago
Mehdi Bouaziz c9b89b54dd Preparing for WeakTopologicalOrder-based abstract interpreter
6 years ago
Mehdi Bouaziz 2be4710811 [AI] Enable debugging only based on --write-html
6 years ago
Mehdi Bouaziz 62b1f39540 [Uninit][8/13] Rename UninitVars to MaybeUninitVars
6 years ago
Mehdi Bouaziz 01f3f39760 [Uninit][6/13] Move some operations to the domain
6 years ago
Mehdi Bouaziz 6ca6de80c3 [Uninit][5/13] Use callee_formals directly
6 years ago
Mehdi Bouaziz fcf2ce1e8f [Uninit][4/13] extras
6 years ago
Mehdi Bouaziz 6fd02b272f [Uninit][3/13] Modules Models and Initial
6 years ago
Mehdi Bouaziz f639906496 [Uninit][2/13] Move summary type
6 years ago
Mehdi Bouaziz 15839539a7 Annot.Method: record rather than pair
6 years ago
Mehdi Bouaziz aa6f5b2ed5 Uninit nits
6 years ago
Mehdi Bouaziz ded6bd8ba4 Uninit: do not use the one-instr-per-node CFG
6 years ago
Mehdi Bouaziz 3ff9a3127c [uninit] Use LowerHIL-AI directly
6 years ago
Ezgi Çiçek aca0b8e130 [Hoisting] Fix hoisting of void functions
6 years ago
Ezgi Çiçek d4f943e953 [purity] Don't report on access methods
6 years ago
Ezgi Çiçek 43b3f80de5 Add simple purity analysis
6 years ago
Nikos Gorogiannis 0c7a8556dc [concurrency] treat @MainThread annotation
6 years ago
Julian Sutherland b838b7bc46 limited widening to 10 steps
6 years ago
Jules Villard d5c59743b7 [callbacks] trace each checker's execution time
6 years ago
Jeremy Dubreil eccfb4de10 [nullsafe][Objective C] more models of methods asserting the paramters to be different from nil
6 years ago
Mehdi Bouaziz 9608c4d340 PrintfArgs: removed unused fixed_pos
6 years ago
Martino Luca aea1b4095e [Perf][CI] Disable threshold based cost reports
6 years ago
Mehdi Bouaziz ddbb7e05d3 Reporting cleanup 22: log_error/warning -> use IssueType rather than exception
6 years ago
Julian Sutherland e715d48c12 QuandaryBO
6 years ago
Mehdi Bouaziz 247e785ae4 Reporting cleanup 21: do not keep in-re-execution issues
6 years ago
Ezgi Çiçek 15bdcca119 [Loop-hoisting] Add a new model for Javax's Provider.get() and make it invariant only
6 years ago
Mehdi Bouaziz d331a7ad19 Start/Exit_node don't need the procname
6 years ago
Mehdi Bouaziz 46cd49df8d PrintfArgs is not an Eradicate checker
6 years ago
Daiva Naudziuniene 2a35d6579b [dead store] Removed special case for constexpr in lambda captures
6 years ago
Sungkeun Cho 0cffc52b3b [inferbo] Simplify memory instantiation of function call
6 years ago
Ezgi Çiçek b2e7a785ba [Loop-hoisting] Add more models for invariant analysis
6 years ago
Daiva Naudziuniene bfab195d08 [dead store] Do not report dead stores on constexpr
6 years ago
Jules Villard 5894258f43 [ownership] do not warn on returning ref to outer local
6 years ago
Daiva Naudziuniene 8e753c2b74 [deadstore] Do not report on __tmp
6 years ago
Josh Berdine 40ab73037e [ocamlformat] upgrade to ocamlformat 0.7
6 years ago
Sungkeun Cho 1bf8ed95b8 [inferbo] Simplify stack/heap memory domain
6 years ago
Ezgi Çiçek 49e582fa49 [Loop-hoisting] Add a new checker for hoisting invariant function calls
6 years ago
Nikos Gorogiannis 14556f52b4 [starvation] whitelist @WorkerThread methods
6 years ago
Ezgi Çiçek 527fb90bbe [Cost] Add a Java model for functions to be considered invariant
6 years ago
Ezgi Çiçek cc18f9883d [Cost] Fix invariant variable analysis to be based on all reaching defns
6 years ago
Mehdi Bouaziz fbe1e853f4 Reporting cleanup 6: mandatory loc for reporting errors
6 years ago
Mehdi Bouaziz 2ee4b5da18 Reporting cleanup 4: clang_method_kind
6 years ago
Julian Sutherland b7c90c3fe0 Fixed incorrect reporting of tainted index in function call by quandary
6 years ago
Mehdi Bouaziz e3e521afca Kill MinTree
6 years ago
Mehdi Bouaziz 35848a5284 Move 4 eradicate files
6 years ago
Daiva Naudziuniene e8c5a84acd [Ownership] Add ownership to return param
6 years ago
Mehdi Bouaziz ad986dffde Get rid of Declare_locals
6 years ago
Jules Villard 59f09ef697 [opam] upgrade atdgen to version 2
6 years ago
Jules Villard e5a5d64760 [caml] do not use `let _ =`
6 years ago
Jeremy Dubreil 3767716c86 [infer][scheduler] simplify the callbacks API
6 years ago
Martino Luca 632cb0e513 [Perf] Emit ZERO_EXECUTION_TIME_CALL issue-type, when zero-costing functions are met
6 years ago
Ezgi Çiçek 0a668c2161 [DEAD_STORE] Capture `constexpr`s in lambdas
6 years ago
Jeremy Dubreil 797eedba8b [infer][scheduler] remove one use of Summary.get
6 years ago
Sungkeun Cho df80ccda08 [inferbo] Use SymbolPath map in summary instead of entry memory
6 years ago
Sungkeun Cho 9eca72d405 [Inferbo] Add relational domains
6 years ago
Martino Luca 9e048c11f8 [Perf] Emit cost polynomial and their degree as part of the report
6 years ago
Martino Luca c50b250576 [Perf] Compute the degree of polynomials
6 years ago
Martin Trojer 46e2c153f1 Add std::string as container-method for objc, and change string matching to regexes.
6 years ago
Daiva Naudziuniene 4d1abb0eeb [ownership] Do not report on temporary variables.
6 years ago
Mehdi Bouaziz 36b581cecd Add cost.mli
6 years ago
Sungkeun Cho 06a04ca9f5 Revert "[Inferbo] Add relational domain"
7 years ago
Sungkeun Cho 1f7a6e53fb [Inferbo] Add relational domain
7 years ago
Jules Villard 6f3719f5f2 [siof] do not warn on simply taking reference of global
7 years ago
Ezgi Çiçek 718f81ac77 Convert list to sequence in `Procdesc.get_siblings`
7 years ago
Ezgi Çiçek 60b74766d5 Fix expensive debugging in cost analysis
7 years ago
Ezgi Çiçek 4624ff48d1 Fix control variable imprecision in do while loops
7 years ago
Mehdi Bouaziz 0639ef82b7 Cost: also take into account arguments in range
7 years ago
Dulma Churchill 60cbc2c98e [biabduction] Enable dynamic dispatch for ObjC methods
7 years ago
Jeremy Dubreil 055a8267e8 [eradicate] promote reports as errors for generated GraphQL source of nulls
7 years ago
Ezgi Çiçek cf1c2acb54 [Cost] Add invariant analysis
7 years ago
Ezgi Çiçek f80af7be93 Fix control var analysis for loops with multiple back-edges per loop head
7 years ago
Dulma Churchill 2f00ccb434 [IR] Unify the proc attribute translation_unit and source_captured
7 years ago
Mehdi Bouaziz 5b6430e739 Cost solver
7 years ago
Mehdi Bouaziz 2918512b95 Cost: prepare for another solver
7 years ago
Mehdi Bouaziz 4a0ed2195a [Cost] Representative map: use the union-find map
7 years ago
Mehdi Bouaziz dc49cb6124 Cost: Polynomial.min_default_left
7 years ago
Mehdi Bouaziz 9ae3b42aef Cost: move union-find to its own module
7 years ago
Dino Distefano ac872f4bb5 Building MinTrees with equivalence relation
7 years ago
Ezgi Çiçek bbd6820ca1 Get rid of data dep analysis and localize it to single step
7 years ago
Daiva Naudziuniene 18b3a465d2 [uninit] Report on unitialized expressions in conditions
7 years ago
Nikos Gorogiannis 4820e3db1e [starvation] add NonBlocking annotation
7 years ago
Jules Villard 710dae8ee4 [doc] add `make doc` target for building html API doc
7 years ago
Mehdi Bouaziz aee02e27ef Cost: control-flow equality classes
7 years ago
Ezgi Çiçek cb8e734bbb Get all the loop instructions
7 years ago
Daiva Naudziuniene 610ed0c885 [uninit] Filter out fields if they come from unions
7 years ago
Mehdi Bouaziz 1b63cb42b7 [cost] Compute range using post state
7 years ago
Mehdi Bouaziz fc5c093d1e ProcCfg: do not include module Node
7 years ago
Jules Villard 8b882ac1df Change license to MIT
7 years ago
Daiva Naudziuniene d7d3e16d6f [uninit] Enable reporting on uninitialized pointers
7 years ago
Mehdi Bouaziz 4927e31c2f Abstract type for list of instructions in node
7 years ago
Mehdi Bouaziz 3a41f50830 get_vararg_type_names: refactor to prepare for new instrs
7 years ago
Mehdi Bouaziz 42b3958a07 ProcCfg: fold on nodes only
7 years ago
Jeremy Dubreil c35278a8f8 [infer] the fragment retains view checker should not warn on field annotated with @AutoCleanup
7 years ago
Jules Villard fecabb3bf3 [siof] do not report on standard streams
7 years ago
Daiva Naudziuniene 93c2d7a4f4 [uninit] Have both pointer and its dereference as uninitialized
7 years ago
Daiva Naudziuniene c47071f186 [uninit] Initialize indirect function call arguments of pointer type
7 years ago
Dino Distefano 4b296003fa Let's traverse the constraints list only once
7 years ago
Daiva Naudziuniene 736badbb2f [uninit] Fix false positive that includes array element passed by reference
7 years ago
Sam Blackshear 9ca945aa2f [ownership] warn when returning references to borrowed values
7 years ago
Daiva Naudziuniene 8ccf4897dd [uninit] Use access expressions
7 years ago
Daiva Naudziuniene 9e1678ec65 [uninit] Check the type of whole lhs rather than the base of lhs
7 years ago
Mehdi Bouaziz 1898ef3a7a [Summary] Move payloads to a separate module
7 years ago
Mehdi Bouaziz aaf346d115 [cost] Polynomial domain
7 years ago
Mehdi Bouaziz 62fa99ad3f Simplified example showing problem with arrays
7 years ago
Jules Villard 3aa6fdf1ce [rename] specs -> summary, Summary -> SummaryPayload
7 years ago
Jules Villard dfe2ad5229 [camel] call `Format.pp_print_*` directly where appropriate
7 years ago
Mehdi Bouaziz d7024298f9 [cost] Implem-agnostic abstract domain name
7 years ago
Daiva Naudziuniene 28b696881c [minor] Use List.is_empty instead of List.length equal to 0
7 years ago
Mehdi Bouaziz c1aac1e089 Cost: Non-negative Bound abstract domain
7 years ago
Mehdi Bouaziz 5fe28785bc Cost: fix min
7 years ago
Jeremy Dubreil 3a3c871684 [infer][objc] the nullable checker should not report issues involving objectForKeyedSubscript:
7 years ago
Mehdi Bouaziz eea5b4c97e Cost: separate conditions for reporting
7 years ago
Jules Villard 902de9d6e3 [sil] make return value and type mandatory
7 years ago
Mehdi Bouaziz 1deaf7bfd6 Cost: instantiate symbolic cost after call
7 years ago
Mehdi Bouaziz e8ceedeb82 [Cost] Forces Inferbo
7 years ago
Mehdi Bouaziz 68129abab8 Cost/inferbo: move range to numerical abstract domain
7 years ago
Jules Villard ce0ffaf877 [ocaml] detect and kill dead modules
7 years ago
Nikos Gorogiannis e0a61c0a4a [starvation] Move to a cluster checker phase for reporting
7 years ago
Mehdi Bouaziz 9ed60bc936 [cost] Removed dead abstract domains
7 years ago
Mehdi Bouaziz 14d6b2f019 [Cost] Use inferbo abstract state as extra rather than calling inferbo transfer functions
7 years ago
Mehdi Bouaziz ad15f558e4 [cost] Simplifications
7 years ago
Mehdi Bouaziz 094eb9dcc7 [Cost] Use OneInstrPerNode CFG
7 years ago
Mehdi Bouaziz 722258d41b Real InstrNode
7 years ago
Dino Distefano 6b6f6be6d9 Don't check prune node condition in the control dependecy analysis for java code
7 years ago
Dino Distefano 70b5e5fd0c Make the cost analysis run on apps
7 years ago
Ezgi Çiçek 8f0701a01c Refine dependency analysis to remove vars at prune exit nodes
7 years ago
Josh Berdine 16988b0a7a [ocamlformat] Upgrade to ocamlformat 0.5
7 years ago
Sam Blackshear 8084c8fec7 [racerd] treat `@InjectProp` formals as owned
7 years ago
Sam Blackshear ce8f958522 [racerd] don't report INTERFACE_NOT_THREAD_SAFE if the receiver of the interface call is marked `ThreadConfined`
7 years ago
Ezgi Çiçek 76300d55c7 Tracks variables that affect control flow for a more precise cost analysis
7 years ago
Sam Blackshear cfa2dd5f83 [quandary] pass call flags to sink creation
7 years ago
Ezgi Çiçek af5265f75d "Report infinity as error per function"
7 years ago
Mehdi Bouaziz 4aefa6f76b Debug: session name
7 years ago
Mehdi Bouaziz 950f46a3b6 [Cost] Proper data structure for constraints
7 years ago
Mehdi Bouaziz 66b3357479 Share ProcCfg.OneInstrPerNode(Normal)
7 years ago
Mehdi Bouaziz 3f5c161391 [Cost] Typos
7 years ago
Mehdi Bouaziz be8ac23557 Callbacks, cleanup: tuple -> record
7 years ago
Jeremy Dubreil 431d4f1290 [infer] fix infinite loop with the suggestion to add nullable annotations on C++ fields
7 years ago
Dino Distefano 3b608695af Improving treatment of default constructor
7 years ago
Sam Blackshear 9180ff56c1 [ownership] handle new kinds of access expressions
7 years ago
Mehdi Bouaziz 1a7c5a1493 Fix deadcode
7 years ago
Mehdi Bouaziz 14e48fb5a0 [RFC] Cost: pair with Inferbo
7 years ago
Ezgi Çiçek 872daf1ba7 Add estimated cost to trace element
7 years ago
Nikos Gorogiannis b335fb9c50 [deadlock] rebrand to starvation
7 years ago
Sam Blackshear 44e5d0564b [ownership] fix false positives on aggregate locals in loops
7 years ago
Jules Villard 84d3144c98 [istd] break IStd.ml into sensible components
7 years ago
Mehdi Bouaziz e9fe470bf9 Cost: bound map as a functional datastructure
7 years ago
Mehdi Bouaziz ffb4074d56 Cost: cleanup
7 years ago
Ezgi Çiçek 1cef32eaf7 Rewrite minimum_propagation algorithm in a functional way
7 years ago
Dino Distefano e54df20eb7 Migrate to Itv.Bound
7 years ago
Sam Blackshear 7efb5cb549 [ownership] allow placement new on non-var expressions
7 years ago
Sam Blackshear 082e3f1f9e [ownership] use Base instead of Var
7 years ago
Sam Blackshear 6b3282f619 [ownership] First parameter to constructor is read, not written
7 years ago
Sam Blackshear f8dfc2305e [ownership] simple 2-step traces
7 years ago
Sam Blackshear ec73adc66d [ownership] support placement new
7 years ago
Sam Blackshear 1ea4f01403 [ownership] consolidate acquires_ownership cases
7 years ago
Mehdi Bouaziz 1db6e0c2c6 [easy] Labels for Procdesc.fold_nodes/instrs
7 years ago
Varun Arora 9387706a54 add clang_method_kind field to AnalysisIssue
7 years ago
Sam Blackshear 12ad6c11c1 [ownership] return bottom on early exit or thrown exception
7 years ago
Sam Blackshear 3a40afcd22 [ownership] directly assigning any field of an aggregate struct counts as initialization
7 years ago
Sam Blackshear 6976181b77 [ownership] special-case frontend-generated inner destructors.
7 years ago
Sam Blackshear 89a6d7e20d [racerd] don't report races in third-party code
7 years ago
Nikos Gorogiannis 3bcfbd6a64 [deadlock] abstract domain
7 years ago
Dino Distefano d2cc5e72f7 Extending analysis to parametric case
7 years ago
Sam Blackshear 1977fefaab [ownership] assume operator= borrows for function types, copies for other types
7 years ago
Daiva Naudziuniene 4157ba820a [HIL] Implicit dereference in access expression
7 years ago
Sam Blackshear a0149872ad [ownership] report invocation of lambdas capturing a var whose lifetime is over
7 years ago
Tony Hu 56872d8126 [java] Add command-line option to specify external Java packages
7 years ago
Sam Blackshear 58adf8dd52 [ownership] implementing borrowing
7 years ago
Jules Villard d773dedb4b [IR] kill `Exp.get_vars`
7 years ago
Sam Blackshear 68e4e94008 [ownership] domain for borrowing
7 years ago
Sam Blackshear e687ef40b3 [dead stores] report on dead stores to values captured by value in a lambda
7 years ago
Dino Distefano 69bfc0535c [Experimental] First very basic version of performance analysis tool
7 years ago
Sam Blackshear dedabf71e2 [liveness] don't report on dead stores of variables captured by reference in a lambda
7 years ago
Josh Berdine 3534838b73 [ocamlformat] Upgrade to ocamlformat 0.4
7 years ago
Sungkeun Cho 373e6b39cc [infer] Use inline record for Typ.Tarray
7 years ago
Sam Blackshear 4485e97bee [ownership] report use after destructor
7 years ago
Jules Villard d3f3386c9e [wibble] rename `Ident{Set,Map,Hash}` -> `{Set,Map,Hash}`
7 years ago
Sam Blackshear d76d20a9ca [ownership] prototype of ownership analysis for tracking reads/moves
7 years ago
Sam Blackshear f191819642 [litho] print name of component with missing prop
7 years ago
Daiva Naudziuniene 5ebc6562ee [HIL] AccessExpression on the left hand side of assignment
7 years ago
Sam Blackshear 87de52210c [litho] handle extra setters for resType props
7 years ago
Jeremy Dubreil 89ec1effde [infer][nullable checker] lookup the attributes in the CFG
7 years ago
Daiva Naudziuniene 896e849bfc [HIL] Access expression
7 years ago
Jeremy Dubreil 2288e66063 [infer][nullable checker] treat all aliases as not null when one is checked for null
7 years ago
Sam Blackshear 1a75ec9cf8 [cleanup] Move ObjC/C++-specific Procname functions to dedicated module
7 years ago
Sam Blackshear c031891d30 [litho] fix divergence bug in unroll_call
7 years ago
Varun Arora ad10435b58 [IR] combine is_objc_instance_method and is_cpp_instance_method fields in ProcAttributes into method_kind
7 years ago
Mehdi Bouaziz d61c4927c1 [ProcnameDispatcher] Optimization and do not crash with Java
7 years ago
Sam Blackshear ab77cfe803 [quandary] thrift services as sources in Java
7 years ago
Sam Blackshear 80b3d080ce [cleanup] sunset Context leaks
7 years ago
Mehdi Bouaziz 653f212023 Disable Inferbo for Java
7 years ago
Jules Villard 4a71067c68 [tests] kill some new dead code
7 years ago
Sam Blackshear 30112cbcb0 [litho] organize functions for GraphQL getters and required props into separate modules
7 years ago
Sam Blackshear ebfe8d1e72 [litho] move reporting of missing required props out of transfer functions
7 years ago
Jules Villard ec118e62a7 [cleanup] make caller pdesc an optional argument of `Ondemand.analyze_proc_desc`
7 years ago
Jules Villard 58e0cbe6ee [base] move `Config.language` to its own `Language` module
7 years ago
Sam Blackshear 2c6fb16636 [litho] support optional Prop's
7 years ago
Sam Blackshear 4545f36875 [litho] prototype of required `@Prop` checker
7 years ago
Sam Blackshear 360151eb10 [litho] utility function for iterating over all call chains encoded in the domain
7 years ago
Sam Blackshear f7c415f7ae [cleanup] restrict Java-specific utility functions to Typ.Procname.Java.t's
7 years ago
Sam Blackshear 04d2882a6b [cleanup] organize Java-specific functions on types
7 years ago
Jules Villard 1a5ba13778 [cfg][minor] do not duplicate the Hashtbl API
7 years ago
Jules Villard 4b1a7b1771 [cleanup] remove dead code
7 years ago
Jules Villard 92e3d56f2e [cleanup] add missing `open! IStd`
7 years ago
Radu Grigore eb91d59e40 [infer][PR] Fixed namespace for Java globals.
7 years ago
Sam Blackshear b3992cbab8 [liveness] add CKComponentKey to whitelist
7 years ago
Jeremy Dubreil 6e1979a3e0 [infer][IR] introduce a fold function over the procedure descriptions in a file to avoid make copies of mutable data-structures
7 years ago
Jeremy Dubreil b089486b5a [infer][nullable checker] take subtyping into account when detecting pointer assignment
7 years ago
Jeremy Dubreil 73b4409e6f [infer][nullable checker] no longer propagate the nullability when the lhs is not a pointer type
7 years ago
Jeremy Dubreil c6a6087ed1 [infer][IR] factor the test for pointer type
7 years ago
Josh Berdine 63439ecc02 [ocamlformat] Upgrade base and ocamlformat
7 years ago
Dino Distefano d83a9445f1 First extension to uninit inter-procedural analysis
7 years ago
Dino Distefano e3e2fb22a1 Change pattern-matching order
7 years ago
Jeremy Dubreil 32deab86bd [infer][nullable checker] avoid reporting the nullable violations that are already reported by the biabduction analysis
7 years ago
Sam Blackshear d6ed9e3bbe [liveness] remove special-casing for destructor reads
7 years ago
Sam Blackshear f37344358b [experimental] interprocedural should_update analysis
7 years ago
Jeremy Dubreil 1f6d73269e [infer] simplify the API to report errors
7 years ago
Jeremy Dubreil c62dd2a0c2 [infer][nullable checker] add models for mutations of mutable dictionaries and mutable arrays
7 years ago
Sam Blackshear b23e967f1b [liveness] print type of unused var
7 years ago
Jeremy Dubreil 83118865aa [infer] add arrayByAddingObject: to the list of methods asserting the parameters
7 years ago
Sam Blackshear 647e1cd62d [dead stores] config file for custom scope guard types
7 years ago
Sam Blackshear 6799e7a7fb [dead stores] whitelist more RAII guard types
7 years ago
Sam Blackshear 3c28e0308a [quandary] clean up source type in report
7 years ago
Sam Blackshear 0ebdd369b0 [liveness] don't warn on dead stores of type CKComponentScope
7 years ago
Jeremy Dubreil 4aaa39fdd1 [infer][nullable checker] propagate object nullablilty when calling an Objective C instance method on a nullable receiver
7 years ago
Jeremy Dubreil d4c81a7798 [infer][nullable checker] model NSDictionary initialization as crashing on nil keys or nil values
7 years ago
Jeremy Dubreil 297195bb3c [infer] move the AccessPath module under the IR subdirectory
7 years ago
Dulma Churchill 306a0a9182 [liveness] Do not report on variables with block attribute
7 years ago
Dulma Churchill 71fde88950 [IR] Adding support for variable attributes, adding __block for ObjC variables
7 years ago
Sam Blackshear 74670cb0ba [dead stores] don't warn on dead stores of ScopeGuard's
7 years ago
Sam Blackshear ca3f71a8b3 [experimental] report call chains reachable from onCreateLayout
7 years ago
Sam Blackshear 8d0f141974 [dead stores] identify dead stores involving struct values
7 years ago
Peter Goldsborough 5a06a187f2 Added is_outside_codebase check for FIELD_SHOULD_BE_NULLABLE
7 years ago
Dino Distefano dfb8b421ac Extending uninit to struct
7 years ago
Dulma Churchill c0f250c45e [liveness] Change the model of assert functions to include the handle failure function to avoid dead store fps
7 years ago
Jeremy Dubreil a991b98d02 [infer][nullable checker] also report a null dereference error when adding nil key or value to NSDictionary
7 years ago
Sam Blackshear ceb0062cdd [cleanup] kill constant propagation pass in bi-abduction
7 years ago
Dino Distefano ba422a8ad8 Remove FPs for struct in ObjC
7 years ago
Jules Villard 6a8d71ad81 [style] s/_foo/foo_/ when `foo_` is not unused
7 years ago
Jeremy Dubreil 354b46f8ca [infer][nullable checker] no report for objects created by URLWithString:
7 years ago
Jeremy Dubreil a4428a4cae [infer][nullable checker] report an error when a nullable value is stored into an NSArray without being checked for null
7 years ago
Sam Blackshear 181959216b [cleanup] remove harness-related code
7 years ago
Jeremy Dubreil 956d6d0a1d [infer][nullable checker] better error messages for nullable violations involving Clang materialized variables
7 years ago
Jeremy Dubreil 1709db4089 [infer] always store the procedure description in the summary
7 years ago
Sam Blackshear 2b0335f32b [quandary] track sanitizers applied in trace domain
7 years ago
Sam Blackshear e2f38423e5 [cleanup] delete repeated calls checker
7 years ago
Sam Blackshear 758048078b [quandary] move sanitizer specifications from TaintSpec -> Trace
7 years ago
Jules Villard 45d5d878cf [cfg] minor renamings
7 years ago
Dino Distefano aa54b1b035 Extending uninit analysis to struct
7 years ago