Summary:public
Add to the code to detect violation of the `NoAllocation` annotation. This diff adds the code to detect such issue based on the code of the `PerformanceCritical` checker. In the next diff, I will refine the list of acceptable allocations, like new exceptions, etc, and add the list of corresponding tests.
Reviewed By: sblackshear
Differential Revision: D2938641
fb-gh-sync-id: 9a047dd
shipit-source-id: 9a047dd
Summary:public
Before this diff, the checker was collecting in a bottom-up fashion all possible call trees from `PerforamanceCritical`-annotated methods to `Expensive`-annotated ones. With this diff, we just collect the names of the direct transitively expensive callees and compute the expensive call stacks when reporting errors only.
Reviewed By: sblackshear
Differential Revision: D2938635
fb-gh-sync-id: dcdd13c
shipit-source-id: dcdd13c
Summary:public We model it as the builtin __instanceof which models the instanceof construct of Java.
The behaviour is the same.
Reviewed By: jvillard
Differential Revision: D2938969
fb-gh-sync-id: 2258de3
shipit-source-id: 2258de3
Summary:public
Translate headers every time they are included provided that they are located inside project_root directory.
While this is suboptimal (we might end up translating same header many times), doing it exactly once
is hard due to parallel compilation and template instantiations
Reviewed By: dulmarod
Differential Revision: D2916799
fb-gh-sync-id: 93b72c4
shipit-source-id: 93b72c4
Summary:public
Is seems that automatically inheriting annotations like `PerformanceCritical` or `NoAllocation` is the right thing to do in general. Otherwise, we need to enforce sub-typing rules which in the best case just adds a little bit of documentation, but could miss important issues when the code is not fully annotated. I am simplifying this part to avoid adding boilerplate code for the `NoAllocation` case.
Reviewed By: sblackshear
Differential Revision: D2938627
fb-gh-sync-id: ddb668b
shipit-source-id: ddb668b
Summary:public
This can avoid watchman to freeze or slow down the test. We don't need to Buck daemon anyway when running the test as setting up the configutation to run Infer as an external compiler invalidates the Buck in-memory data anyway.
Reviewed By: jberdine
Differential Revision: D2942424
fb-gh-sync-id: 38a39d7
shipit-source-id: 38a39d7
Summary:public
Type-based resolution of fields, constructors, etc. can be ambiguous if
types are not principal. Compile with -principal and enable warnings 18
and 19 to check these cases.
Reviewed By: jvillard
Differential Revision: D2938237
fb-gh-sync-id: bb4237b
shipit-source-id: bb4237b
Summary:
fixes#267.
By calling opam with the --shell=bash in the script I don't get the errors I had before.
The new line I added in the docker/README.md was so the list would display correctly when rendered.
Closes https://github.com/facebook/infer/pull/272
Reviewed By: jberdine
Differential Revision: D2916859
Pulled By: jvillard
fb-gh-sync-id: 4243f79
shipit-source-id: 4243f79
Summary:
public
This model does not seem to bring anything anymore. Useless because ...
Reviewed By: cristianoc
Differential Revision: D2920118
fb-gh-sync-id: 7f708d7
shipit-source-id: 7f708d7
Summary:
public
Avoid problems of overwriting good type information with incomplete information
when type declaration happens after its complete definition.
The solution is that we will only time we *update* type information is
when struct declaration has definition as well (which should happen once)
Reviewed By: cristianoc, sblackshear
Differential Revision: D2921811
fb-gh-sync-id: 16baba3
shipit-source-id: 16baba3
Summary:
public
Because we ran `./configure` *after* checking if clang was to be compiled, we
could fail mysteriously if `shasum` was not present. Now, we fail at the
`./configure` step with a clear error message.
closes#275
Reviewed By: akotulski
Differential Revision: D2921841
fb-gh-sync-id: b8edd8b
shipit-source-id: b8edd8b
Summary:
public
libtooling/build and clang-ocaml/build are already part of releases, don't rebuild them
closes#276
Reviewed By: jvillard
Differential Revision: D2921669
fb-gh-sync-id: bf88f8e
shipit-source-id: bf88f8e
Summary:
public
When this happen, we don't want to waste time compiling infer for java, etc.,
only to realise later that the submodule is not there.
Reviewed By: akotulski
Differential Revision: D2921636
fb-gh-sync-id: b22c44c
shipit-source-id: b22c44c
Summary:
An issue facebook/infer#270 suggest two docker build failure error.
facebok/infer#270 issues two docker build failure errors.
- failure in 'make -C infer clang java' : add './configure' before the command.
- failure in building sources : add 'opam switch 4.02.3' to use this syntax in ' cc4439938e/infer/src/clang/cLocation.ml (L76) '. In ubuntu, when 'apt-get install ocaml' ( cc4439938e/docker/Dockerfile (L20) ), for now, it installs ocaml 4.01, but this syntax does not work with ocaml 4.01.
Closes https://github.com/facebook/infer/pull/271
Reviewed By: jberdine
Differential Revision: D2916909
Pulled By: jvillard
fb-gh-sync-id: 3eba991
shipit-source-id: 3eba991
Summary:
public
The inductive list predicate was not firing during abstraction because of a type mismatch between C and Java. In Java, the second parameter of the `Sil.Sizeof` constructor is always `Sil.Subtype.exact` in C but is `Sil.Subtype.subtypes` in Java. This diff fixes the confution by comparing the `Sil` types only instead of the type expressions.
Reviewed By: jberdine
Differential Revision: D2912493
fb-gh-sync-id: 3f712a8
shipit-source-id: 3f712a8