Semmle Inc. es una plataforma de análisis de código ; Semmle fue adquirida por GitHub (propiedad de Microsoft ) el 18 de septiembre de 2019 por una cantidad no revelada. [ 2 ] La tecnología LGTM de Semmle automatiza la revisión de código , rastrea las contribuciones de los desarrolladores y señala problemas de seguridad del software . [ 2 ] La plataforma LGTM aprovecha el motor de consulta CodeQL (anteriormente QL) [ 3 ] para realizar análisis semánticos en bases de código de software. GitHub tiene como objetivo integrar la tecnología de Semmle para proporcionar servicios continuos de detección de vulnerabilidades. [ 4 ] En noviembre de 2019, el uso de CodeQL se hizo gratuito para investigación y código abierto. [ 5 ] CodeQL comparte un pedigrí directo con .QL (dot-que-ell), que deriva del árbol genealógico de Datalog , o es una evolución de una tecnología similar.
SemmleCode es un lenguaje de consulta orientado a objetos para bases de datos deductivas desarrollado por Semmle. Se distingue dentro de esta clase por su soporte para consultas recursivas .
Antecedentes corporativos
La empresa tenía su sede en San Francisco , y sus operaciones de desarrollo estaban ubicadas en Blue Boar Court, Alfred Street , en el centro de Oxford , Inglaterra . Entre los clientes de Semmle figuraban Credit Suisse , la NASA y Dell . [ 6 ]
Antecedentes de SemmleCode
Académico
SemmleCode se basa en la investigación académica sobre la consulta del código fuente de los programas de software. El primer sistema de este tipo fue el sistema Omega de Linton, [ 7 ] donde las consultas se formulaban en QUEL . QUEL no permitía la recursión en las consultas, lo que dificultaba la inspección de estructuras de programas jerárquicas como el grafo de llamadas . El siguiente desarrollo significativo fue, por lo tanto, el uso de la programación lógica , que sí permite dichas consultas recursivas, en el navegador XL C++. [ 8 ] Sin embargo, la desventaja de usar un lenguaje de programación lógica completo es que es muy difícil lograr una eficiencia aceptable. El sistema CodeQuest, [ 9 ] desarrollado en la Universidad de Oxford , fue el primero en aprovechar la observación de que Datalog , una versión muy restrictiva de la programación lógica, se encuentra en el punto óptimo entre poder expresivo y eficiencia. El lenguaje de consulta QL es una versión orientada a objetos de Datalog.
Industrial
Las primeras investigaciones sobre la consulta del código fuente de los programas informáticos dieron lugar a numerosas aplicaciones industriales. En particular, se convirtieron en la piedra angular de los sistemas de inteligencia de aplicaciones ( minería de datos en el código fuente de los sistemas de software) y de la renovación de software. En 2007, CAST, con sede en París [ 10 ] , era uno de los líderes del mercado en este ámbito, y entre otros actores importantes se encontraba BluePhoenix, en Herzliya , Israel . SemmleCode se diferencia de estos sistemas por el uso de un lenguaje de consulta orientado a objetos, que permite a los programadores formular fácilmente nuevas consultas específicas para su proyecto.
Un relato completo de los desarrollos académicos e industriales que llevaron a la creación de SemmleCode se puede encontrar en un artículo de Hajiyev et al. [ 11 ].
Consulta de ejemplo en QL
Para ilustrar el uso de QL, consideremos la conocida regla de la programación orientada a objetos que establece que los campos públicos deben declararse como finales. Para encontrar violaciones de esta regla, debemos buscar campos que sean públicos pero no finales. En QL, este requisito se expresa de la siguiente manera:
desde Campo f donde f . hasModifier ( "public" ) y no ( f . hasModifier ( "final" )) seleccione f . getDeclaringType (). getPackage (), f . getDeclaringType (), fAquí no solo se fselecciona el campo problemático, sino también el paquete y el tipo en el que se produce su declaración.
Integración de SemmleCode con entornos de desarrollo
SemmleCode proporciona una interfaz de usuario a través del IDE Eclipse para consultar código Java (tanto código fuente como bytecode), así como archivos XML, y para editar consultas QL. Sin embargo, esta es solo una aplicación de la tecnología subyacente: QL se puede utilizar para consultar cualquier otro tipo de datos complejos.
Como parte de la integración en el grupo empresarial Microsoft/GitHub, el flujo de trabajo original basado en Eclipse ha sido reemplazado por un flujo de trabajo basado en Visual Studio Code de Microsoft . [ 3 ]
Véase también
Referencias
- ↑ "GitHub adquiere Semmle para ayudar a los desarrolladores a detectar vulnerabilidades en el código" . venturebeat.com . 18 de septiembre de 2019. Consultado el 20 de septiembre de 2019 .
- 1 2 Lardinois, Frederic (18 de septiembre de 2019). "GitHub adquiere la herramienta de análisis de código Semmle" . techcrunch.com . TechCrunch . Recuperado el 13 de marzo de 2021 .
- 1 2 "Presentación de CodeQL" . semmle.com . Semmle. Septiembre de 2019. Consultado el 13 de marzo de 2021.
El producto y las herramientas 'QL' han sido renombrados a CodeQL... lo que antes se llamaba una 'instantánea QL' ahora es una base de datos CodeQL.
- ↑ De Simone, Sergio (19 de septiembre de 2019). "GitHub integrará el análisis de código Semmle para la detección continua de vulnerabilidades" . infoq . InfoQ . Consultado el 13 de marzo de 2021 .
- ↑ Krill, Paul (15 de noviembre de 2019). "GitHub hace que CodeQL sea gratuito para la investigación y el código abierto" . infoworld.com . InfoWorld . Consultado el 13 de marzo de 2021 .
- ↑ "La empresa derivada Semmle obtiene 8 millones de dólares de Accel Partners" (Comunicado de prensa). Universidad de Oxford. 16 de septiembre de 2014. Consultado el 18 de septiembre de 2015 .
- ↑ "Sistema Omega de Linton" . EE. UU.: Universidad de California, Berkeley . 1983.
- ↑ Shahram Javey, Kin'ichi Mitsui, Hiroaki Nakamura, Tsuyoshi Ohira, Kazu Yasuda, Kazushi Kuse, Tsutomu Kamimura y Richard Helm. Arquitectura del navegador XL C++ . En CASCON '92: Actas de la conferencia de 1992 del Centro de Estudios Avanzados sobre Investigación Colaborativa , páginas 369-379. IBM Press, 1992.
- ↑ "Sistema CodeQuest" . Reino Unido: Laboratorio de Informática de la Universidad de Oxford . Archivado del original el 9 de octubre de 2006.
- ↑ "Software CAST" .
- ↑ Elnar Hajiyev, Mathieu Verbaere y Oege de Moor, CodeQuest: Consultas de código fuente escalables con Datalog. En ECOOP 2006: Actas de la Conferencia Europea de Programación Orientada a Objetos de 2006 , páginas 2-27. Springer , 2006.
Lecturas adicionales
- Mark A. Linton. Implementación de vistas relacionales de programas. En Peter B. Henderson, editor, Software Development Environments (SDE) , páginas 132–140, 1984.
Enlaces externos
- Sitio web oficial
- Empresas con sede en Oxford
- Empresas de software del Reino Unido
- Herramientas de prueba de software
- Herramientas de desarrollo Java
- Lenguajes de consulta
- Herramientas de análisis estático de programas