Finding inter-procedural bugs at scale with Infer static analyzer — стаття про принцип роботи статичного аналізатора Infer і його основні відмінності від інших аналізаторів.
Infer розроблений в Facebook для пошуку помилок в програмах на C, C++, Objective-C і Java. У випадку з Java він може виявляти такі помилки як: звернення до об’єкта, що містить значення null, витоку ресурсів, відсутність блокувань і стану гонки.
Основна відмінність цього інструменту від інших у тому, що він уміє використовувати знання про все дереві викликів методів, щоб знайти помилку. Як приклад автори наводять код, який бере об’єкт, отриманий від одного методу, і передає його іншому. Завдяки можливості проаналізувати, які значення повертає перший метод і як його використовує другий, аналізатор може передбачити, що перший метод може повернути null, а другий не перевіряє свої аргументи на значення null.