Facebook открыл RacerD, статический анализатор для многопоточного кода на Java
Facebook представил новый проект RacerD, в рамках которого открыты наработки по выявлению проблем, возникающих из-за одновременного выполнения кода в многопоточных программах на языке Java. RacerD интегрирован в систему статического анализа Infer и обеспечивает определение потенциальных ошибок в коде, использующем классы/методы, заявленные как @ThreadSafe, или осуществляющем блокировки при помощи ключевого слова "synchronized".
RacerD сконцентирован на выявление состояний гонки, возникающих между вызовом методов класса в разных потоках. Например, определяются ситуации, когда выполняется два одновременных обращения к переменной члена класса, не отделенной при помощь мьютекса, если в одном из обращений выполняется операция записи. RacerD уже около 10 месяцев используется в Facebook и за это время помог выявить более тысячи проблем в многопоточном коде проектов для платформы Android, на стадии их разработки. Большая часть ошибок была выявлена в процессе перевода реализации ленты новостей в Android-приложении Facebook на многопоточную модель работы.