Articulo de referencia

Analizador estático de inferencia

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...

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. Ofrece soporte para Java , C , C++ y Objective-C , y se implementa en Facebook para 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 sobre verificación automática de programas basada en lógica de separación condujo a una sucesión de herramientas académicas, incluyendo Smallfoot y SpaceInvader . Partiendo del trabajo académico, Cristiano Calcagno, Dino Distefano y Peter O'Hearn , tres investigadores del University College London y la Queen Mary University of London , 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 se publicó como código abierto. [ 2 ] [ 6 ]

En 2013, cuando Infer se convirtió en código abierto, se afirmó que los desarrolladores de Facebook corregían cientos de errores al mes identificados por Infer antes de que llegaran a producción. [ 5 ] Para 2015, esta cifra había aumentado a más de 1000 errores al 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, falta de protecciones de bloqueo y condiciones de carrera de concurrencia en código Android y Java. Comprueba problemas de puntero nulo, fugas de memoria, convenciones de codificación y API no disponibles en C, C++ y Objective C. [ 1 ]

Infer utiliza una técnica denominada biabducción [ 8 ] para realizar un análisis compositivo de programas que interpreta los procedimientos del programa independientemente de quienes los llaman. Se afirma que esto permite a Infer escalar a grandes bases de código y ejecutarse rápidamente en cambios de código de forma incremental, al tiempo que realiza un análisis interprocedimental que razona más allá 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 de código a medida que se envían para su revisión, donde informa sobre posibles regresiones. Para ello, analiza incrementalmente los cambios de código mediante un proceso en el sistema de integración continua de Facebook , que se ejecuta en sus centros de datos. [ 9 ]

Infer también tiene un lenguaje específico de dominio para el análisis de árboles de sintaxis abstracta , basado en ideas de la verificación de modelos para la lógica de árboles de computación . [ 10 ] [ 11 ]

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

Premios

Dino Distefano 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 sobre lógica de separación e Infer. [ 15 ]

Referencias

  1. 1 2 3 "Inferir analizador estático" . Sitio web .
  2. 1 2 3 Calcagno, Cristiano; Distefano, Dino; O'Hearn, Peter. "Abriendo el código fuente de Facebook Infer: Identifique errores antes de lanzar" .
  3. Calcagno, Cristiano; Distefano, Dino; O'Hearn, Peter W.; Yang, Hongseok (1 de diciembre de 2011). "Análisis de la forma compositiva mediante biabducción". Journal of the 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 en C». Métodos formales de la NASA . Notas de clase en ciencias de la computación. 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. 1 2 Constine, Josh. "Facebook adquiere los activos del desarrollador británico de software de detección de errores para móviles Monoidics | TechCrunch" . Techcrunch.
  6. Finley, Klint. "La herramienta de IA de Facebook para eliminar errores ya está disponible para todos | WIRED" . www.wired.com .
  7. 1 2 O'Sullivan, Bryan. "Cuatro empleados de Facebook ganan el prestigioso premio CAV" . Investigación de Facebook .
  8. Lógica de separación y biabducción, página , sitio del proyecto Infer .
  9. 1 2 Calcagno, Cristiano; Distefano, Dino; Dubreil, Jeremy; Gabi, Dominik; Hooimeijer, Pieter; Luca, Martino; O'Hearn, Peter; Papakonstantinou, Irene; Purbrick, Jim; Rodriguez, Dulma (27 de abril de 2015). "Moving Fast with Software Verification". Métodos formales de la NASA . Notas de clase en ciencias de la computación. 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; Distefano, Dino; Luca, Martino; Rhee, Ryan; Villard, Jules. "AL: Un nuevo lenguaje declarativo para detectar errores con Infer" . Publicación del blog de código de Facebook .
  11. Sergio, de Simone. "El nuevo lenguaje AL de Facebook pretende simplificar el análisis estático de programas" . InfoQ .
  12. "Inferir página de Github" . GitHub .
  13. «Medallas de plata para los emprendedores tecnológicos emergentes más brillantes del Reino Unido» . Real Academia de Ingeniería. Archivado del 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 miembros de la RAEng 2016, Peter O'Hearn" . Real Academia de Ingeniería .
  • Sitio web oficial