stringtranslate.com

Inferir analizador estático

Infer , [1] a veces denominado "Facebook Infer", es una herramienta de análisis de código estático desarrollada por un equipo de ingeniería de Facebook junto con colaboradores de código abierto. Proporciona soporte para Java , C , C++ y Objective-C , y se implementa en Facebook en el análisis de sus aplicaciones de Android e iOS (incluidas las de WhatsApp, Instagram, Messenger y la aplicación principal de Facebook). [2]

Historia

Infer tiene sus raíces en la investigación académica sobre Lógica de Separación , una teoría para la verificación formal de software. El trabajo en la verificación automática de programas basado en Separation Logic dio lugar a una sucesión de herramientas académicas, incluidas Smallfoot y SpaceInvader. Sobre la base del trabajo académico, Cristiano Calcagno, Dino Distefano y Peter O'Hearn, tres investigadores del University College London y la Queen Mary University de Londres, cofundaron la startup de verificación Monoidics en 2009, y Monoidics desarrolló la primera versión de Infer. [3] [4] [2] Monoidics fue adquirida por Facebook en 2013, [5] y en 2015 el código de Infer fue de código abierto. [2] [6]

A partir de 2013, cuando Infer era de código abierto, se afirmaba que los desarrolladores de Facebook solucionaban cientos de errores por mes identificados por Infer antes de llegar a producción. [5] Para 2015, esto había aumentado a más de 1000 errores por mes. [7]

Spotify, Uber, Mozilla, Sky y Marks and Spencer se encuentran entre los usuarios reportados de Infer. [1]

Tecnología

Infer realiza comprobaciones de excepciones de puntero nulo, fugas de recursos, accesibilidad de anotaciones, protecciones de bloqueo faltantes y condiciones de carrera de concurrencia en código de Android y Java. Comprueba si hay problemas de puntero nulo, pérdidas de memoria, convenciones de codificación y API no disponibles en C, C++ y Objective C. [1]

Infer utiliza una técnica llamada bi-abducción [8] para realizar un análisis compositivo del programa que interpreta los procedimientos del programa independientemente de quienes lo llaman. Se afirma que esto permite a Infer escalar a grandes bases de código y ejecutar rápidamente cambios de código de manera incremental, sin dejar de realizar un análisis interprocedimental que razona a través de los límites de los procedimientos. [9]

Infer está conectado al sistema de revisión de código de Facebook. Su modelo de implementación consiste en comentar automáticamente las modificaciones del código a medida que se envían para su revisión, donde informa posibles regresiones. Lo hace analizando incrementalmente los cambios de código a través de un trabajo en el sistema de integración continua de Facebook que se ejecuta en sus centros de datos. [9]

Infer también tiene un lenguaje de dominio específico para el linting de árboles de sintaxis abstracta, basado en ideas de Model Checking for Computation Tree Logic . [10] [11]

Infer está escrito principalmente en el lenguaje de programación OCaml . [12]

Premios

Dino Distefano  [it] recibió la medalla de plata de la Real Academia de Ingeniería en 2014 en reconocimiento a la adquisición de Monoidics. [13]

Cuatro miembros del equipo Infer, Josh Berdine, Cristiano Calcagno, Dino Distafano y Peter O'Hearn, recibieron el Premio de Verificación Asistida por Computadora 2016, un premio que compartieron con John C. Reynolds , Samin Ishtiaq y Hongseok Yang. [7] [14]

Peter O'Hearn fue elegido miembro de la Real Academia de Ingeniería en 2016, por su trabajo en Separation Logic and Infer. [15]

Referencias

  1. ^ abc "Inferir analizador estático". Sitio web .
  2. ^ abcCalcagno , Cristiano; Distéfano, Dino; O'Hearn, Peter. "Inferencia de Facebook de abastecimiento abierto: identifique errores antes de realizar el envío".
  3. ^ Calcagno, Cristiano; Distéfano, Dino; O?Hearn, Peter W.; Yang, Hongseok (1 de diciembre de 2011). "Análisis de forma composicional mediante bi-abducción". Revista de la ACM . 58 (6): 1–66. CiteSeerX 10.1.1.420.2150 . doi :10.1145/2049697.2049700. 
  4. ^ Calcagno, Cristiano; Distefano, Dino (18 de abril de 2011). "Infer: un verificador automático de programas para la seguridad de la memoria de programas C". Métodos formales de la NASA . Apuntes de conferencias sobre informática. vol. 6617. Springer, Berlín, Heidelberg. págs. 459–465. CiteSeerX 10.1.1.421.9629 . doi :10.1007/978-3-642-20398-5_33. ISBN  978-3-642-20397-8.
  5. ^ ab Constine, Josh. "Facebook adquiere activos del desarrollador de software de verificación de errores móviles del Reino Unido Monoidics | TechCrunch". Crunch tecnológico.
  6. ^ Finley, Klint. "La herramienta de inteligencia artificial de Facebook para eliminar errores ahora está abierta a todos | WIRED". www.wired.com .
  7. ^ ab O'Sullivan, Bryan. "Cuatro empleados de Facebook ganan el prestigioso premio CAV". Investigación de Facebook .
  8. ^ Lógica de separación y bi-abducción, página, sitio del proyecto Infer.
  9. ^ ab Calcagno, Cristiano; Distéfano, Dino; Dubreil, Jeremy; Gabi, Dominik; Hooimeijer, Pieter; Luca, Martín; O'Hearn, Peter; Papakonstantinou, Irene; Purbrick, Jim; Rodríguez, Dulma (27 de abril de 2015). "Avanzando rápido con la verificación de software". Métodos formales de la NASA . Apuntes de conferencias sobre informática. vol. 9058. Springer, Cham. págs. 3–11. doi :10.1007/978-3-319-17524-9_1. ISBN 978-3-319-17523-2.
  10. ^ Churchill, Dulma; Distéfano, Dino; Luca, Martín; Rhee, Ryan; Villard, Julio. "AL: Un nuevo lenguaje declarativo para detectar errores con Infer". Publicación de blog sobre código de Facebook .
  11. ^ Sergio, de Simone. "El nuevo lenguaje AL de Facebook tiene como objetivo simplificar el análisis de programas estáticos". InfoQ .
  12. ^ "Inferir página de Github". GitHub .
  13. ^ "Medallas de plata para los emprendedores tecnológicos más brillantes y prometedores del Reino Unido". Real Academia de Ingeniería. Archivado desde el original el 26 de octubre de 2014 . Consultado el 5 de julio de 2017 .
  14. ^ comité, Premio CAV. "Premio a la Verificación Asistida por Computadora 2016". PRLog .
  15. ^ "Nuevos becarios de RAEng 2016, Peter O'Hearn". Real Academia de Ingeniería .

enlaces externos