Semmle Inc es un proveedor de plataforma de análisis de código , con oficinas en San Francisco , Seattle , Nueva York , Oxford , Valencia y Copenhague . [2] Semmle fue adquirida por GitHub (propiedad de Microsoft ) el 18 de septiembre de 2019 por un monto no revelado. [3] La tecnología LGTM de Semmle automatiza la revisión de código , rastrea las contribuciones de los desarrolladores y marca los problemas de seguridad del software . [3] La plataforma LGTM aprovecha el motor de consultas CodeQL (anteriormente QL) [4]para realizar análisis semántico en bases de código de software. GitHub tiene como objetivo integrar la tecnología Semmle para proporcionar servicios continuos de detección de vulnerabilidades. [5] En noviembre de 2019, el uso de CodeQL se hizo gratuito para investigación y código abierto. [6] CodeQL comparte un pedigrí directo con .QL (dot-que-ell), que se deriva del árbol genealógico de Datalog , o es una evolución de una tecnología similar. [ aclaración necesaria ]
Tipo de negocio | Subsidiario |
---|---|
Fundado | Diciembre de 2006 en Oxford , Inglaterra |
Sede | San Francisco, California, EE. UU. |
Fundador (es) | Oege de Moor |
Gente clave | Oege de Moor, Pavel Augustinov, Julian Tibble |
Industria | Análisis de software |
Productos | Software y servicios de análisis de código |
Padre | GitHub [1] (2019-presente) |
URL | semmle |
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
Basada en la investigación en compiladores y análisis de datos, desarrollada por un equipo de la Universidad de Oxford , la tecnología patentada de Semmle crea una base de conocimientos utilizando todos los datos disponibles sobre el proceso de desarrollo de software (código fuente, emisión de tickets, costos de desarrollo, ubicación del equipo, etc. ) y permite a sus usuarios consultar de forma precisa y eficaz esa base de conocimientos. Los resultados se presentan en interfaces de usuario diseñadas para las diferentes necesidades de desarrolladores, gerentes y ejecutivos. Semmle afirma que los conocimientos derivados de la aplicación de la tecnología de Semmle ayudan a los equipos a desarrollar proyectos de manera más inteligente, retener y desarrollar mejor el talento, controlar los costos de software y ofrecer nuevas funciones antes. [ cita requerida ]
La empresa tiene su sede en San Francisco y sus operaciones de desarrollo se encuentran en Blue Boar Court, Alfred Street , en el centro de Oxford , Inglaterra . Los clientes de Semmle incluyen Credit Suisse , NASA y Dell . [7]
Fondo de SemmleCode
Académico
SemmleCode se basa en la investigación académica para consultar la fuente de los programas de software. El primer sistema de este tipo fue el sistema Omega de Linton, [8] donde las consultas se redactaron en QUEL . QUEL no permitía la recursividad en las consultas, lo que dificultaba la inspección de las estructuras jerárquicas del programa, como el gráfico de llamadas . El siguiente desarrollo significativo fue, por lo tanto, el uso de la programación lógica , que permite este tipo de consultas recursivas, en el navegador XL C ++. [9] Sin embargo, la desventaja de utilizar un lenguaje de programación lógico completo es que es muy difícil lograr una eficiencia aceptable. El sistema CodeQuest, [10] desarrollado en la Universidad de Oxford , fue el primero en explotar la observación de que Datalog , una versión muy restrictiva de la programación lógica, se encuentra en el punto óptimo entre el poder expresivo y la eficiencia. El lenguaje de consulta QL es una versión orientada a objetos de Datalog.
Industrial
Los primeros trabajos de investigación se centraron en consultar la fuente de los programas de software derivados de una serie de aplicaciones industriales. En particular, se convirtió en la piedra angular de los sistemas para la inteligencia de aplicaciones ( extracción de datos en la fuente de los sistemas de software) y la renovación de software. En 2007, CAST [11] , con sede en París , es uno de los líderes del mercado en esa área, y otros actores importantes incluyen a BluePhoenix en Herzliya , Israel . SemmleCode se diferencia de estos sistemas en el uso de un lenguaje de consulta orientado a objetos, que permite a los programadores formular fácilmente nuevas consultas que son específicas de su propio proyecto.
Se puede encontrar una descripción completa de los desarrollos académicos e industriales que llevaron a la creación de SemmleCode en un artículo de Hajiyev et al. [12]
Consulta de muestra en QL
Para ilustrar el uso de QL, considere la regla bien conocida en la programación orientada a objetos de que los campos públicos deben declararse finales. Para encontrar violaciones de esa regla, debemos buscar campos que sean públicos pero no definitivos. En QL, ese requisito se expresa de la siguiente manera:
del campo f donde f . hasModifier ( "public" ) y no ( f . hasModifier ( "final" )) selecciona f . getDeclaringType (). getPackage (), f . getDeclaringType (), f
Aquí no solo se f
selecciona el campo infractor , 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 de Eclipse para consultar código Java (tanto código fuente como código byte), así como archivos XML y 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 del pliegue en la casa corporativa de 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 . [4]
Ver también
- Lista de herramientas para el análisis de código estático
- .QL
- Registro de datos
Referencias
- ^ "GitHub adquiere Semmle para ayudar a los desarrolladores a detectar vulnerabilidades de código" . venturebeat.com . Consultado el 20 de septiembre de 2019 .
- ^ "Contáctenos" . Semmle .
- ^ a b Lardinois, Frederic (18 de septiembre de 2019). "GitHub adquiere la herramienta de análisis de código Semmle" . techcrunch.com . TechCrunch . Consultado el 13 de marzo de 2021 .
- ^ a b "Introducción a CodeQL" . semmle.com . Semmle . Septiembre de 2019 . Consultado el 13 de marzo de 2021 .
el producto y las herramientas de 'QL' han sido renombrados a CodeQL ... lo que antes se llamaba una 'instantánea de QL' ahora es una base de datos de CodeQL.
- ^ De Simone, Sergio (19 de septiembre de 2019). "GitHub para 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 investigación y código abierto" . infoworld.com . InfoWorld . Consultado el 13 de marzo de 2021 .
- ^ "La empresa spin-out Semmle obtiene $ 8 millones 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" . Estados Unidos: 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. Prensa de IBM, 1992.
- ^ "Sistema CodeQuest" . Reino Unido: Laboratorio de Computación de la Universidad de Oxford . Archivado desde el 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 registro de datos. En ECOOP 2006: Actas de la Conferencia europea de 2006 sobre programación orientada a objetos , páginas 2–27. Springer , 2006.
Otras lecturas
- Mark A. Linton. Implementación de visiones relacionales de programas. En Peter B. Henderson, editor, Entornos de desarrollo de software (SDE) , páginas 132-140, 1984.
enlaces externos
- Página web oficial