infer

A static analyzer for Java, C, C++, and Objective-C

MIT License

Stars
14.7K
Committers
204

Bot releases are hidden (Show)

infer - Infer version 0.17.0

Published by artempyanykh about 5 years ago

This is a binary release of Infer for Linux and MacOS. To use it follow these instructions.

Highlights:

  • There’s a new --inefficient-keyset-iterator checker 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.
  • --starvation is 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 @optional methods: 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-threshold allows 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.
  • --ownership checker 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.xz
infer - Infer version 0.16.0

Published by jvillard over 5 years ago

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, eg O(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:

$ shasum -a 256 infer-*-v0.16.0.tar.xz
435c415a9a22f41e7f2074b542b035b972a2a8c237d5490285d763bf333a817b  infer-linux64-v0.16.0.tar.xz
471f06c72754a45d73433623e8092bf9ea1315884b8ebff24d3f79f9a8b0380a  infer-osx-v0.16.0.tar.xz

The facebook-clang-plugins version used for this release is https://github.com/facebook/facebook-clang-plugins/commit/36266f6c86041896bed32ffec0637fefbc4463e0.

infer - Infer version 0.15.0

Published by jvillard over 6 years ago

This is a binary release of Infer for Linux and MacOS. To use it follow these instructions.

Highlights:

  • switch infer license to MIT
  • publish binaries
  • [clang] lots of improvements to the frontend

More changes in the full list of changes.

The facebook-clang-plugins version used for this release is https://github.com/facebook/facebook-clang-plugins/commit/f31f7c9c28d8fb9b59c0dacc74a24e4bfe90a904.

The sha256 checksums of the tarballs are:

$ shasum -a 256 infer-*-v0.15.0.tar.xz
f6eb98162927735e8c545528bb5a472312e5defcf0761e43c07c73fe214cb18a  infer-linux64-v0.15.0.tar.xz
0f87b8fd68b62717b8c3c143aeaea38b5102435f80fff484cb570a51cf510f9c  infer-osx-v0.15.0.tar.xz
infer - Infer version 0.14.0

Published by jvillard over 6 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

Highlights:

  • New checker: --ownership detects 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: --uninit detects uses of uninitialized values (enabled by default, C/C++/Objective-C)
  • New checker: --racerd now 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.

The sha256 checksums of the tarballs are:

$ shasum -a 256 infer-*-v0.14.0.tar.xz
330b4bbb5fbf90c04d4c096ce0d8d713dac72925d68c0e1b55ab30e6d5201bcb  infer-linux64-v0.14.0.tar.xz
350767bc29acdcb86734a2009e97bdf2a3603db0fbf3f18c59fc07b416977021  infer-osx-v0.14.0.tar.xz
infer - Infer version 0.13.1

Published by jvillard over 6 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

This is a fix for the 0.13.0 release, whose build broke due to changes in opam.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.13.1.tar.xz
02ff3c49c83d3a4e967696f8818b1cffcb042c26eefbb2ba8d78c27244b5940c ?infer-linux64-v0.13.1.tar.xz
182ff5b76ff561408dc52b32611346e097098651a491fb8a0a453a1d098d4299 ?infer-osx-v0.13.1.tar.xz
infer - Infer version 0.13.0

Published by jvillard about 7 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

The main changes are:

  • Infer now runs multiple checkers at the same time by default, including the biabduction analysis that was the previous and only default. In particular, we are pleased to introduce RacerD for race detection in Java. The following checkers are activated by default: annotation reachability (Java), biabduction (C/C++/ObjC, Java), fragment retains view (Java), immutable cast (Java), liveness (C/C++/ObjC), printf args (Java), quandary (C/C++/ObjC, Java), RacerD (C/C++/ObjC, Java), SIOF (C/C++/ObjC). Each checker may report several issue types.
  • Upgraded to clang 5.0
  • Richer DSL for writing linters (AL), and a new default linter for const pointers in Objective-C
  • Lots of perf improvements and bug fixes, and improved logging

Please note the following breaking changes:

  • -a eradicate is now simply --eradicate and can run alongside other checkers
  • inferTraceBugs is now the explore subcommand: infer explore --help
  • infer now depends on sqlite

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.13.0.tar.xz
79a7fe8b7a05ea2a685997d9188fef7319c7b3d72064f14dea7a5f23ec50efac ?infer-linux64-v0.13.0.tar.xz
1abec8df73581d35e018f81285197d82a6f3e6101c528fb8be14405765da155e ?infer-osx-v0.13.0.tar.xz
infer - Infer version 0.12.1

Published by jvillard about 7 years ago

This is a hotfix release to update infer's opam dependencies to cope with upgrades of cppo in opam (in particular, #718).

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.12.1.tar.xz
d26dd519c19345530a92a6ae3f7058af3bd8ddfd7c2c945d116c6fd658be6c4 ?infer-linux64-v0.12.1.tar.xz
ce76b87bf4f70be594aaddc7402609af6338623fbb448dacca610e10bcb7c60a ?infer-osx-v0.12.1.tar.xz
infer - Infer version 0.12.0

Published by jvillard over 7 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

This introduces subcommands and man pages for all subcommands. If you are used to infer's command line already, here are some rough equivalences (the commands might not be completely equivalent in some cases):

  • infer [options] -- [build command] becomes infer run [options] -- [build command]
  • infer becomes infer analyze
  • infer -a capture [options] -- [build command] becomes infer capture [options] -- [build command]
  • infer -a compile [options] -- [build command] becomes infer compile [options] -- [build command]

The previous forms of invocations are still supported but may go away in future releases.

If you were using them, the internal binaries have disappeared and are replaced as follows:

  • InferPrint [options] becomes infer report [options]
  • InferAnalyze [options] becomes infer analyze [options]

See man infer, man infer-capture, man infer-analyze, etc. for more details, and let us know if anything is missing.

This release introduces AL, a language for writing linters against the clang AST. AL lets you check syntactic properties of source code by traversing the AST of the program. Using the included domain-specific language (DSL), you can write your own set of checks.

As usual, this release also includes lots of fixes and improvements. For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.12.0.tar.xz
698c9ff83a23fb3d6ffa0d62d5394e691ad5e3352f27bf2d4105afdfd07cc201 ?infer-linux64-v0.12.0.tar.xz
3b97bcabf85af8feb8d6fd0b8622fe2b4fbf27fa215fab61e3a660b5435b6d21 ?infer-osx-v0.12.0.tar.xz
infer - Infer version 0.11.0

Published by jvillard over 7 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

Highlights:

  • [Java] ThreadSafety analyzer is now on by default; run it with infer -a checkers .... This checker will try and detect races (unprotected concurrent accesses with at least one write) in classes bearing the @ThreadSafe annotation.
  • Infer now builds using OCaml 4.04.0.

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.11.0.tar.xz
c2a893d66befc2652a28e9e6481f680fe863512f8c507b52616c5731878c22f0 ?infer-linux64-v0.11.0.tar.xz
0c435efa311cb70a79b5b8ae9cc4e714651e6653c5542a58cc624f2439d68e36 ?infer-osx-v0.11.0.tar.xz
infer - Infer version 0.10.0

Published by jvillard over 7 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

  • [Clang] C++ support.
  • [Clang] Improved support for cmake and Xcode compilation databases. Use with infer --compilation-database compile_commands.json (for cmake and Buck), or with infer --compilation-database-escaped compile_commands.json (for xcbuild and xcpretty).
  • [C++] New SIOF Checker.
  • [iOS] New linter for target SDK version. Use with infer --iphoneos-target-sdk-version <min version you support> ... or with infer -a linters --iphoneos-target-sdk-version <min version you support> ....
  • [Java] New Thread Safety Checker.
  • [Java] Smarter analysis of dynamic dispatch.
  • [Java] Improved Maven integration.
  • [Java] @SuppressWarnings support removed. Use @SuppressLint instead. android.annotation.SuppressLint is only available on Android, but do let us know if that is an issue for you.

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.10.0.tar.xz
62287344459e2e467def603f97dac9cfb335a8f2852a51217696db948164780c ?infer-linux64-v0.10.0.tar.xz
6fdcfe52cee28f57a86e8cd80bf4cac7b2dda83a3cc511f86834636ada14a808 ?infer-osx-v0.10.0.tar.xz
infer - Infer version 0.9.5

Published by jvillard over 7 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS.

This includes a fix for #577.

To use it follow these instructions.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.9.5.tar.xz
199f5cc6466db63375774d20bbea8f50e0394380b7e8b258b73a44c2578b5159 ?infer-linux64-v0.9.5.tar.xz
43d6c68d4e41057be8188877872544bf7c0e6a53a122be64efe06f3f3b772f47 ?infer-osx-v0.9.5.tar.xz
infer - Infer version 0.9.4.1

Published by akotulski almost 8 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions. It only contains hotfix to infer 0.9.4 fixing https://github.com/facebook/infer/issues/508

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.9.4.1.tar.xz
860f20741bd54f1e058e0e0c4550fc4211016ef93f154938eb173df555a560df ?infer-linux64-v0.9.4.1.tar.xz
a738a3492a4e0229df8abd745cd88bca8fb547bc3bcca15ec194d6780b07cbda ?infer-osx-v0.9.4.1.tar.xz
infer - Infer version 0.9.4

Published by jvillard almost 8 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

  • [Java] preliminary support for Java 8: infer no longer skips methods containing Java 8 code
  • [clang] support for clang compilation databases
  • [Xcode] more robust integration using the compilation database (requires xcpretty)
  • [iOS] added checks for some of the ComponentKit best practices
  • lots of under-the-hood improvements, including perf improvements and bug fixes

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.9.4.tar.xz
1b85b84a5f798919d2630b313033e710b1e20fba24f5c751ca1b5e0a3c601cff ?infer-linux64-v0.9.4.tar.xz
529d147bccf3285ddb7500c22e0c50d6e0cbdb2c7f9b11a84e8005873994b3e2 ?infer-osx-v0.9.4.tar.xz
infer - Infer version 0.9.3

Published by jberdine about 8 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

  • Fix issues with using Infer with Clang 4.0 and Xcode 8
  • Various fixes and performance improvements

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.9.3.tar.xz
a55a940082690d06c0c05d8b772b8a9eef8b98ecb0ea82f86e5d473bcf878211 ?infer-linux64-v0.9.3.tar.xz
8bfbb7ee76388393b5cf513984da79c305af3a1e6bbd057f83082f093d3cc0d7 ?infer-osx-v0.9.3.tar.xz
infer - Infer version 0.9.2

Published by jvillard about 8 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.9.2.tar.xz
7c374d14affc19c44cd23746696eba7b4422a900e03f8a6b9985d95a05d2d95f ?infer-linux64-v0.9.2.tar.xz
3935f8be25982a023aba306b66804d73a7316ab833296277c1ec6c3694bfc7c7 ?infer-osx-v0.9.2.tar.xz
infer - Infer version 0.9.1

Published by jvillard about 8 years ago

This is a minor source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. It contains bugfixes to 0.9.0, in particular to enable packaging via Homebrew and to fix an issue with locales. To use it follow these instructions.

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.9.1.tar.xz
c6dc64db4a6075d4fac32712bbd0e087ecb6d909ac590220acd64bd4a33480c3 ?infer-linux64-v0.9.1.tar.xz
6dbb1bb7b3e28d99a8c02fd42f2f87894bf0c5564c13645aae679effb8ee8418 ?infer-osx-v0.9.1.tar.xz
infer - Infer version 0.9.0

Published by jvillard over 8 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

Since the changelog is so big, let's just mention these two items:

  • lots of perf improvements and fixes across all analyses (thanks to everyone who reported issues and made pull requests!)
  • [experimental] C++ language support. See --cxx in infer --help. This is still in heavy development and only includes a few bug types. Feedback welcome!

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.9.0.tar.xz
1596e2d4e67f920349de4950a2b6b98451d5115602826b508eb7b4d8e1b41caf ?infer-linux64-v0.9.0.tar.xz
3aebf37bbcbb3c17912c24bfd1f2aec7b8d1256f0617cca5ddeab7aeab58b3ce ?infer-osx-v0.9.0.tar.xz
infer - Infer version 0.8.1

Published by jvillard over 8 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

This release includes:

  • [Objective-C and C] upgrade clang to version 3.8.0
  • [all] bugfixes

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.8.1.tar.xz
7f75ae69d91fb9a8c43163f02a9b2a4919b8ebc42dfb2f729722201a0b18ea6b ?infer-linux64-v0.8.1.tar.xz
0cd33936966fcb4761251279aa737ca07352fb8a8e864697a1d2cc5735c56ae7 ?infer-osx-v0.8.1.tar.xz
infer - Infer version 0.8.0

Published by jvillard over 8 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

  • New --reactive mode to rapidly analyze the effects of a code change. Be sure to check out the documentation of the new workflow. As a result, the incremental mode (--incremental) is now deprecated.
  • New XML output, compatible with output from other static analyzers, eg PMD. To use it, pass the --pmd-xml flag to Infer (see infer --help).
  • Use @SuppressWarnings("infer") in your Java projects to annotate methods or classes where Infer shouldn't report.

This release incorporates a number of contributions (#284 #289 #300 #301) and addresses a number of issues (#279 #281 #283 #288 #291 #294).

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.8.0.tar.xz
4942ca2c8ad9e76ff6e31c6473b7f360cc95d9db43218dc7747ae34aef6294f4 ?infer-linux64-v0.8.0.tar.xz
2b494a2b595bd7cf0f0cfaac4e9bece568575a4bcf25cc00161ed34c0319dc58 ?infer-osx-v0.8.0.tar.xz
infer - Infer version 0.7.0

Published by jvillard over 8 years ago

This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.

This release addresses a number of bugs, eg #270 #274 #275 #276. Thanks to all of you who reported bugs!

There are also new features:

For the full list of changes included see here.

The sha256 checksums of the tarballs are:

$ shasum -a 256 -p infer-*-v0.7.0.tar.xz
b8c4f32bc286893aded3302a2915a66fe7e799edbbaf286ffdcc5218866db3ae ?infer-linux64-v0.7.0.tar.xz
c83753c04bea8ad1dae3877d23d094d963d293b5d926a21ea8ea9443c870404a ?infer-osx-v0.7.0.tar.xz
Package Rankings
Top 3.56% on Proxy.golang.org
Top 2.85% on Repo1.maven.org