Sourced from infer-annotation's releases.
Infer version 0.17.0
This is a binary release of Infer for Linux and MacOS. To use it follow these instructions.
Highlights:
- There’s a new
--inefficient-keyset-iteratorchecker for finding inefficient uses of Java's keyset iterators that retrieve both key and value (on by default).- Complete the set of Android thread annotations and Java nullability annotations. Updated artifacts are available on Maven Central.
--starvationis now on by default. This analysis catches problems with threads not being able to make progress due to locking issues, incorrect scheduling priorities, etc. For instance, on Android calling Future.get from a UiThread without a sensible timeout will be flagged as a starvation issue.- New Objective-C linter for calls to
optionalmethods:UNSAFE_CALL_TO_OPTIONAL_METHOD, enabled by default.- A new call-graph scheduler (
--call-graph-schedule) improves performance of the analysis phase of Infer, especially when the number of files to analyze is less than available CPUs.- A new flag
--oom-thresholdallows to throttle the analysis when the amount of free memory is below the provided threshold.- New genrule based Buck/Java integration is much faster than the previous one, use with
--genrule-master-mode.- Infer’s internal clang is now in version 8.0.0.
- Update to javalib 3.1 provides better compatibility with Java 9 and Java 11. Refer to their change log for more details.
- Infer can now be built and run on MacOS Mojave without fiddling with
SDKROOT(although you still might need it with non-standard toolchain setup).- [β] Pulse is a new experimental lifetime analysis for C++, give it a try with
--pulse. Beware that it doesn’t report much yet.--ownershipchecker was superseded by Pulse and removed.... and many other fixes and improvements. For the full list of changes included see here.
The facebook-clang-plugins version used for this release is https://github.com/facebook/facebook-clang-plugins/commit/9386890e42043d04f9 cd9e7b204cb525d4417c41.
The sha256 checksums of the tarballs are:
$ shasum -a 256 infer-*-v0.17.0.tar.xz de972ba3043f18b29a8eff6cd7612e24f5ffaef038dc7949befeaf490931725e infer-linux64-v0.17.0.tar.xz 1a3ef6fb51846ae63ffd7fde3b0255f75bab6157f5de1842606fa32988d101f8 infer-osx-v0.17.0.tar.xzInfer version 0.16.0
This is a binary release of Infer for Linux and MacOS. To use it follow these instructions.
It's been a long time since the previous release, here are some new features and improvements you can find in this new release:
Backend analyses:
- A brand new analysis to compute the runtime cost of methods and functions: passing
--cost(off by default) to Infer will output a costs-report.json file describing, among others, the computational complexity of each function in the code using the big-O notation, egO(1),O(list.length), ...- The deadlock detection analysis has been ported to C++ and Objective-C and mainly focuses on self-deadlocks (taking a mutex twice). Activate with
--starvation(off by default).- The data race detector RacerD has been ported to Objective-C and detects races on fields protected by a C++ mutex. It reports "Thread Safety Violation" and "GuardedBy Violation" errors on Java and "Lock Consistency Violation" on C++ and Objective-C. Activate with
--racerd(on by default).- A progress bar is displayed while the analysis is running
- Countless improvements and tweaks, in particular in RacerD and in analyses for C++.
Frontends:
- Infer now ships with clang version 7.0.1
- Support for Java up to version 11
The sha256 checksums of the tarballs are:
</tr></table>
... (truncated)
Sourced from infer-annotation's changelog.
Version 0.17.0
- There's a new
--inefficient-keyset-iteratorchecker for finding inefficient uses of Java's keyset iterators that retrieve both key and value (on by default).- Complete the set of Android thread annotations and Java nullability annotations. Updated artifacts are available on Maven Central.
--starvationis now on by default. This analysis catches problems with threads not being able to make progress due to locking issues, incorrect scheduling priorities, etc. For instance, on Android calling Future.get from a UiThread without a sensible timeout will be flagged as a starvation issue.- New Objective-C linter for calls to
optionalmethods:UNSAFE_CALL_TO_OPTIONAL_METHOD, enabled by default.- A new call-graph scheduler (
--call-graph-schedule) improves performance of the analysis phase of Infer, especially when the number of files to analyze is less than available CPUs.- A new flag
--oom-thresholdallows to throttle the analysis when the amount of free memory is below the provided threshold.- New genrule based Buck/Java integration is much faster than the previous one, use with
--genrule-master-mode.- Infer's internal clang is now in version 8.0.0.
- Update to javalib 3.1 provides better compatibility with Java 9 and Java 11. Refer to their change log for more details.
- Infer can now be built and run on MacOS Mojave without fiddling with
SDKROOT(although you still might need it with non-standard toolchain setup).- [β] Pulse is a new experimental lifetime analysis for C++, give it a try with
--pulse. Beware that it doesn't report much yet.--ownershipchecker was superseded by Pulse and removed.Version 0.16.0
Backend analyses:
- A brand new analysis to compute the runtime cost of methods and functions: passing
--cost(off by default) to Infer will output a costs-report.json file describing, among others, the computational complexity of each function in the code using the big-O notation, egO(1),O(list.length), ...- The deadlock detection analysis has been ported to C++ and Objective-C and mainly focuses on self-deadlocks (taking a mutex twice). Activate with
--starvation(off by default).- The data race detector RacerD has been ported to Objective-C and detects races on fields protected by a C++ mutex. It reports "Thread Safety Violation" and "GuardedBy Violation" errors on Java and "Lock Consistency Violation" on C++ and Objective-C. Activate with
--racerd(on by default).- A progress bar is displayed while the analysis is running
- Countless improvements and tweaks, in particular in RacerD and in analyses for C++.
Frontends:
- Infer now ships with clang version 7.0.1
- Support for Java up to version 11
Version 0.15.0
- switch infer license to MIT
- publish binaries
- [clang] lots of improvements to the frontend
Version 0.14.0
- New checker:
--ownershipdetects a subset of use-after-free issues due to bad manual memory management. This is a rough prototype of Rust-style borrow checker for C++. (enabled by default, C++)- New checker:
--uninitdetects uses of uninitialized values (enabled by default, C/C++/Objective-C)- New checker:
--racerdnow also detects inconsistent lock usage in C++. Also improved the lock domain to reduce false positives for all languages.- Improved C++ support: destructors are now properly translated; addresses and pointers are handled more precisely
- Improved retain cycles detection (Objective-C)
- Upgraded the internal clang to clang 7
- [internal] SQLite is being used to store some of infer's analysis artefacts instead of storing them in files on disk. This improves analysis speed and reduces load on the OS.
Version 0.13.1
... (truncated)