Jeremy Dubreil
50eae0739d
[nullsafe] add an example using Guava Verify.verifyNotNull(...)
...
Reviewed By: mbouaziz, ngorogiannis
Differential Revision: D13995158
fbshipit-source-id: 8729a6ef1
6 years ago
Jules Villard
1aa413a65d
[classloads] add `replace` target to tests
...
Summary: The Makefile was missing that target and making `make test-replace` at the root of the repo fail.
Reviewed By: ngorogiannis
Differential Revision: D13990483
fbshipit-source-id: 805b5d2a9
6 years ago
Jeremy Dubreil
adfd5a6418
[nullsafe] consistent models for the scrict containers
...
Reviewed By: mbouaziz
Differential Revision: D13977297
fbshipit-source-id: a32be3431
6 years ago
Ezgi Çiçek
ea486c59d8
[purity] Always show PURE_FUNCTION issues
...
Reviewed By: mbouaziz
Differential Revision: D13973375
fbshipit-source-id: f23dab260
6 years ago
Ezgi Çiçek
6e0682b463
[purity] Mark unmodeled functions as modifying global state
...
Reviewed By: mbouaziz
Differential Revision: D13941653
fbshipit-source-id: 02a15b29c
6 years ago
Jeremy Dubreil
d08cabe7ed
[eradicate] match the different re-definitions of Preconditions.checkState
...
Reviewed By: mbouaziz
Differential Revision: D13966540
fbshipit-source-id: 3cdbb3fbc
6 years ago
Nikos Gorogiannis
374538a02f
[crashcontext] die
...
Reviewed By: jeremydubreil, mbouaziz, jvillard
Differential Revision: D13861427
fbshipit-source-id: 85e340bb5
6 years ago
Mehdi Bouaziz
1b8927badd
[inferbo/cost] Do not produce inferbo issues on Cost and Purity analysis
...
Reviewed By: skcho
Differential Revision: D13827167
fbshipit-source-id: 734950a1e
6 years ago
Mehdi Bouaziz
8a3592c34e
[inferbo] Uncouple numerical analysis and numerical checks
...
Summary:
This will allow to get the numerical results for Cost, Hoisting, Purity without the Inferbo issues.
For now, I still forced Inferbo issues for Cost and Purity to avoid lots of changes in tests, that will go away soon.
Reviewed By: ezgicicek, skcho
Differential Revision: D13826741
fbshipit-source-id: 796d1a50d
6 years ago
Nikos Gorogiannis
2ee8ab2990
[class-loads] catch expressions
...
Reviewed By: ezgicicek
Differential Revision: D13832128
fbshipit-source-id: 1d3778763
6 years ago
Nikos Gorogiannis
b4a22a5bdd
[classloads] prune and multidimensional arrays
...
Reviewed By: ezgicicek
Differential Revision: D13818684
fbshipit-source-id: 8e5289f8f
6 years ago
Nikos Gorogiannis
3e55f8eb60
[classloads] class object expressions
...
Reviewed By: mbouaziz
Differential Revision: D13818059
fbshipit-source-id: 785d557e0
6 years ago
Nikos Gorogiannis
3f9eb37246
[classloads] casts and instanceof
...
Reviewed By: mbouaziz
Differential Revision: D13817582
fbshipit-source-id: c40be6bf8
6 years ago
Nikos Gorogiannis
c1a00b2358
[classloads] restrict loads via fields
...
Reviewed By: ezgicicek
Differential Revision: D13817232
fbshipit-source-id: 470d5ce11
6 years ago
Nikos Gorogiannis
f171d0496b
[classloads] array expressions
...
Reviewed By: mbouaziz
Differential Revision: D13786746
fbshipit-source-id: 9774da835
6 years ago
Nikos Gorogiannis
3fc4ccbc14
[classloads] load super classes recursively
...
Reviewed By: mbouaziz
Differential Revision: D13771265
fbshipit-source-id: da600f912
6 years ago
Nikos Gorogiannis
89e396571d
[classloads] treat loads and stores wrt to field derefs
...
Reviewed By: mbouaziz
Differential Revision: D13761363
fbshipit-source-id: bcaddd13b
6 years ago
Nikos Gorogiannis
5686d67072
[classloads] fix treatment of static initializers
...
Reviewed By: jvillard
Differential Revision: D13751141
fbshipit-source-id: f64af292b
6 years ago
Nikos Gorogiannis
00df708f98
[classloads] record at most one load for each class
...
Reviewed By: ezgicicek
Differential Revision: D13750609
fbshipit-source-id: cd55a3370
6 years ago
Nikos Gorogiannis
39b11619b8
[classloads] overhaul test infra & fix treatment of self-class loading in method calls
...
Reviewed By: ddino
Differential Revision: D13622717
fbshipit-source-id: 233cc5d74
6 years ago
Jeremy Dubreil
87a8ddc8fa
[nullsafe] merge the option names
...
Reviewed By: mbouaziz
Differential Revision: D13682855
fbshipit-source-id: 28c990725
6 years ago
Jeremy Dubreil
910def4262
[nullsafe] rename the method for unsafe access to lists and maps
...
Reviewed By: ezgicicek
Differential Revision: D13668339
fbshipit-source-id: 3b07fff32
6 years ago
Jules Villard
16c0c03050
resource leaks tutorial
...
Summary: Publish solutions to the lab, and a Docker file and image to get started more quickly with infer hacking.
Reviewed By: mbouaziz
Differential Revision: D13648847
fbshipit-source-id: daf48ad03
6 years ago
Ezgi Çiçek
f7deed7593
[cost] Add examples that we can't handle currently
...
Reviewed By: mbouaziz, jvillard
Differential Revision: D13596579
fbshipit-source-id: 7460d430d
6 years ago
Sungkeun Cho
6a8f389c35
[inferbo] Prune (p=null)
...
Summary: This diff unset powloc and arrayblk values of p when assume(p==Null).
Reviewed By: mbouaziz, jvillard
Differential Revision: D13415366
fbshipit-source-id: a491a957f
6 years ago
Mehdi Bouaziz
5616940ec0
[inferbo] Symbols for one value
...
Summary:
For abstract values representing one concrete value, create only one symbol instead of two.
Still create two symbols (lb, ub) for abstract values representing multiple concrete values (like array cells).
As a consequence, comparisons of symbolic values are more precise (we can even prove equality). I expect to remove a bunch of FPs.
Another consequence is the disappearance of `.lb` and `.ub` in many reports.
Reviewed By: skcho
Differential Revision: D13072084
fbshipit-source-id: 9bc0b9881
6 years ago
Mehdi Bouaziz
5d1a213f52
[Hil] Fix failure in exception node
...
Reviewed By: jberdine
Differential Revision: D13541755
fbshipit-source-id: a58458046
6 years ago
Mehdi Bouaziz
85bab87d16
[cost] The first cost model is a log
...
Reviewed By: ezgicicek
Differential Revision: D13175881
fbshipit-source-id: 7718bdf0d
6 years ago
Nikos Gorogiannis
002e470137
[racerd] fix bug in ownership transitivity
...
Reviewed By: jvillard
Differential Revision: D13488078
fbshipit-source-id: 9d40d75bc
6 years ago
Mehdi Bouaziz
33aa07357f
[inferbo] Model Java collections using arrays
...
Reviewed By: ezgicicek, skcho
Differential Revision: D13190960
fbshipit-source-id: fba435f34
6 years ago
Nikos Gorogiannis
b50f56de16
[racerd] properly recognize all non-source variables
...
Reviewed By: jeremydubreil, mbouaziz
Differential Revision: D13505828
fbshipit-source-id: f5a0be17d
6 years ago
Ezgi Çiçek
b46f55d0bc
[purity] Mark functions with empty modified params as pure
...
Reviewed By: mbouaziz, ngorogiannis
Differential Revision: D13452909
fbshipit-source-id: f0dc419b1
6 years ago
Nikos Gorogiannis
24bd229ada
[infer][eradicate] example of error messages involving the temporary variables used to translate logical operations and conditional assignment
...
Reviewed By: ezgicicek
Differential Revision: D13516477
fbshipit-source-id: 37096f273
6 years ago
Mehdi Bouaziz
8f060939d6
[inferbo] Java pointers, arrays and collections
...
Reviewed By: ezgicicek
Differential Revision: D13128600
fbshipit-source-id: 0dd876692
6 years ago
Mehdi Bouaziz
f6c2bd3f61
[quandary] Insecure Intent Handling
...
Reviewed By: ngorogiannis
Differential Revision: D13163873
fbshipit-source-id: 3f1417f9c
6 years ago
Mehdi Bouaziz
809100d612
[inferbo] Prettier field name for Java in traces
...
Reviewed By: ngorogiannis
Differential Revision: D13505750
fbshipit-source-id: f9a322449
6 years ago
Mehdi Bouaziz
dfd725d46c
[quandary] Also use summary for direct sources
...
Reviewed By: ngorogiannis
Differential Revision: D13488414
fbshipit-source-id: fcf2947cf
6 years ago
Jeremy Dubreil
61d75d9991
[infer][nullsafe] use the same human readable error message for Eradicate and the new Nullsafe backend
...
Reviewed By: mbouaziz
Differential Revision: D13414508
fbshipit-source-id: 06a366177
6 years ago
Nikos Gorogiannis
9d6a9f52ec
[starvation] improve 2-way deadlock reports
...
Reviewed By: mbouaziz
Differential Revision: D13450650
fbshipit-source-id: 0dbd349d1
6 years ago
Nikos Gorogiannis
8d855bdcdb
[access paths] do not print class name of Java fields
...
Reviewed By: jeremydubreil, mbouaziz
Differential Revision: D13450595
fbshipit-source-id: 5e3c5e994
6 years ago
Ezgi Çiçek
89b73e554e
[purity] Mark functions that write to global static vars as impure
...
Reviewed By: ngorogiannis
Differential Revision: D13434587
fbshipit-source-id: 6fb3cf917
6 years ago
Mehdi Bouaziz
af6e4ff9d1
Fix quandary tests output
...
Reviewed By: ngorogiannis
Differential Revision: D13451392
fbshipit-source-id: 965e9d3d6
6 years ago
Mehdi Bouaziz
87b3907628
[quandary] Allow several kinds for external sources/sinks
...
Reviewed By: ngorogiannis
Differential Revision: D13417113
fbshipit-source-id: 0838c5704
6 years ago
Nikos Gorogiannis
101283f9d0
[starvation] fix trace description strings for taking locks
...
Reviewed By: mbouaziz
Differential Revision: D13416738
fbshipit-source-id: 02ebb6178
6 years ago
Ezgi Çiçek
61b51b09db
[hoisting] Rename hoisting message
...
Reviewed By: ngorogiannis
Differential Revision: D13415995
fbshipit-source-id: bbf1ee855
6 years ago
Ezgi Çiçek
88850d5119
[cost] Show simplified procname for Callsite paths
...
Reviewed By: mbouaziz
Differential Revision: D13399921
fbshipit-source-id: 8496e6ecf
6 years ago
Nikos Gorogiannis
f8fc40cea9
[starvation] improve debugging output
...
Reviewed By: ezgicicek
Differential Revision: D13399324
fbshipit-source-id: 5f2eb124a
6 years ago
Jeremy Dubreil
1baf723e3e
[infer][nullsafe] make the error message more explicit about the typing nature of the analysis
...
Reviewed By: ngorogiannis
Differential Revision: D13388567
fbshipit-source-id: 0dc4c2b47
6 years ago
Ezgi Çiçek
dde9723926
[inferbo] Add tests for Java collections
...
Reviewed By: mbouaziz
Differential Revision: D13377810
fbshipit-source-id: d57aa740a
6 years ago
Sungkeun Cho
f9161b164f
[inferbo] On-demand heap symbol using path
...
Summary:
It materializes symbolic values of function parameters on-demand. The on-demand materialization is triggered when finding a value from an abstract memory and joining/widening abstract memories.
Depends on D13294630
Main idea:
* Symbolic values are on-demand-ly generated by a symbol path and its type
* In order to avoid infinite generation of symbolic values, symbol paths are canonicalized by structure types and field names (which means they are abstracted to the same value). For example, in a linked list, a symbolic value `x->next->next` is canonicalized to `x->next` when the structures (`*x` and `*x->next`) have the same structure type and the same field name (`next`).
Changes from the previous code:
* `Symbol.t` does not include `id` and `pname` for distinguishing symbols. Now, all symbols are compared by `path:SymbolPath.partial` and `bound_end`.
* `SymbolTable` is no longer used, which was used for generating symbolic values with new `id`s.
Reviewed By: mbouaziz
Differential Revision: D13294635
fbshipit-source-id: fa422f084
6 years ago