Esta distribución de los archivos de definición de la API de Scaife incluye archivos formateados YAML, JSON y HTML. En la mayoría de las versiones, hay un archivo en cada formato de archivo para cada uno de los cinco módulos Scaife.
En el lanzamiento de la API de marzo de 2021, solo lanzamos los archivos YAML. Esta versión tiene todos nuestros módulos actualizados para usar el formato OpenApi versión 3. En el futuro, también actualizaremos nuestros scripts que realizan la generación automatizada de código a JSON y HTML, para trabajar con OpenAPI versión 3.
El archivo YAML especifica la definición de API del entorno de marco integrado de análisis de código fuente (SCAIFE) [1, 2, 3, 5], en un formato que los desarrolladores pueden usar fácilmente para ver, modificar y generar automáticamente el código desde (por ejemplo, con las herramientas Swagger-Editor y Swagger-Codgen [4]). El archivo YAML fue creado casi por completo por los desarrolladores de SEI. Las únicas cosas que fueron generadas automáticamente por herramientas Swagger dentro del archivo YAML son algunos de los ejemplos.
Los archivos JSON se generaron automáticamente ejecutando Swagger-Codegen en los archivos Swagger.yaml, ya que algunos desarrolladores prefieren ver la API en JSON o tener herramientas de generación de código que funcionan mejor con JSON.
Los archivos HTML también especifican la definición de la API Scaife, en un formato legible por personas que prefieren no (o no tienen herramientas para) leer archivos YAML. Los archivos HTML se pueden ver en cualquier navegador web estándar. Los archivos HTML contienen hipervínculos, y el documento técnico referenciado a continuación proporciona orientación sobre cómo comprender los archivos HTML.
Scaife es una arquitectura que admite la clasificación y priorización de la alerta de análisis estático. Está diseñado para que una amplia variedad de herramientas de análisis estático pueda integrarse con el sistema utilizando la definición de API que estamos desarrollando. A partir de las versiones de la API de SCAIFE 2.0.0, hemos agregado llamadas API para permitir que SCAIFE reciba actualizaciones sobre comotrices de código y nuevas salidas de análisis estático de los servidores de integración continua (CI). Esperamos que la API sea de interés para las organizaciones que desarrollan y/o investigan herramientas de análisis estático, agregadores de auditoría de alerta de análisis estático y otros marcos de auditoría de alerta de análisis estático. Los desarrolladores pueden hacer referencia a esta definición de API de Scaife, para ayudarlos a estimar el esfuerzo de desarrollo que se requeriría para modificar las herramientas de su organización para hacer y responder a las llamadas de la API de Scaife. Además, esta definición de API se está publicando con el objetivo de generar comentarios de desarrolladores y organizaciones interesadas en implementar la API Scaife, para ayudar a mejorar la API de Scaife para ser más fácilmente utilizable por los desarrolladores para una amplia variedad de herramientas de análisis estáticos. Un sistema prototipo que lo implementa se ha distribuido a los colaboradores de proyectos de investigación.
La arquitectura Scaife que se muestra en la figura incluye cinco servidores. El sistema es modular, diseñado para que cada módulo pueda ser instanciado por diferentes herramientas/software, mientras que el sistema general debe mantener la misma funcionalidad. El módulo de UI tiene un front-end de GUI que permite visualizar alertas de análisis estático (FFSA) y almacena proyectos locales. La arquitectura de Scaife está destinada a permitir una amplia variedad de herramientas de FFSA y herramientas de alerta del agregador para obtener la funcionalidad de clasificación y priorización al interactuar como un módulo de UI con el resto del sistema SCAIFE. Estas herramientas deben instanciar las llamadas de la API del módulo de interfaz de usuario a los otros servidores, para hacerlo. El módulo de Datahub almacena datos (herramienta, alerta, proyecto, meta-data de suite de prueba, adjudicatons, etc.) de uno o más módulos de UI y juzgará algunas meta-alertas. El módulo de estadística crea, ejecuta y almacena clasificadores y algoritmos heurísticos adaptativos (aprendizaje activo) y algoritmos automatizados de hiperparaméteres. El módulo de priorización almacena fórmulas de priorización y campos de priorización suprimidos por el usuario. El módulo de registro se utiliza para la autenticación y el control de acceso. Genera tokens de registro, además proporciona autenticación y autorización básica para otros servidores.
Seleccione uno de los cinco módulos para comenzar a inspeccionar.: La mayoría de los desarrolladores de herramientas de herramientas FFSA y agregador de alerta estarán más interesados en la definición de API del módulo de interfaz de usuario. Para permitir que su herramienta interactúe con el sistema Scaife, su herramienta debe instanciar la API del módulo de interfaz de usuario. Sin embargo, algunos investigadores/desarrolladores se centraron en mejorar la clasificación, el aprendizaje activo y la optimización automatizada de hiper-paraméteres querrán centrarse en la API del módulo de estadísticas. Pueden desarrollar nuevos algoritmos y incorporarlos modularmente dentro de un prototipo que hemos desarrollado (si son nuestro colaborador de investigación) o simplemente modificar sus propias herramientas para instanciar la API del módulo de estadística y luego interactuar con un sistema SCAIFE con otros módulos desarrollados por diferentes personas (por ejemplo, para un módulo UI, podrían usar la versión de escala que desarrollamos para trabajar modularmente con SCAILE). Del mismo modo, algunos investigadores/desarrolladores se centran en mejorar el rendimiento, la seguridad, la resistencia y la escalabilidad del almacenamiento de datos agregado y eventualmente esperado para ser grande. Esas personas querrán centrarse en la API del módulo Datahub. Esperamos que un número menor de investigadores/desarrolladores implementen módulos de registro o priorización. Sin embargo, sus API seguirán siendo útiles para revisar, ya que otros servidores deben interactuar con ellos, ya sea en un cliente o un servidor.
Si puede, le recomendamos que use el editor Swagger de código abierto (y gratuito) o una herramienta similar de visualización y edición de API. Abra un archivo de definición de API (.yaml o .json) en eso. Swagger Editor proporciona una forma fácil de usar de ver, hacer pruebas simples y modificar la definición de API.
De lo contrario, vea el archivo de definición de API HTML en un navegador web. De esta manera, se puede acceder a los modelos y métodos siguiendo los hipervínculos asociados con cada recurso en la sección de definición de la API de Scaife a continuación.
Cada sección de definición de API se clasifica en función de los módulos de origen y destino de las llamadas API. Por ejemplo, la sección API de registro de modelos rápidos y del módulo de inicio de sesión contiene solo una categoría de llamadas API en la etiqueta UITorregistration. La fuente (solicitud) de las llamadas API proviene del módulo UI, y las llamadas API se reenvían al destino: el módulo de registro. Los modelos de datos se definen en la sección inferior del archivo.
Esperemos que no solo inspeccione la API, la usará para integrar su herramienta o código en un sistema SCAIFE. Puede generar automáticamente el código a partir de la definición de la API YAML o JSON de cualquiera de los módulos SCAIFE, utilizando Swagger Codegen [4] o herramientas similares. Esto no solo tiene el beneficio de acelerar y automatizar el desarrollo del código, sino que también garantiza que el código instancie la API Scaife. Si tiene una herramienta para la que desea generar código de cliente (es decir, desea un código que hará una llamada a un servidor Scaife definido en la definición de API de ese servidor), herramientas como Swagger Codegen generará código en cualquiera de una amplia variedad de idiomas. Puede colocar el código del cliente generado en su propio código en el lugar correcto y usar sus propias variables como parámetros. Del mismo modo, puede generar automáticamente el código del servidor para cualquiera de los módulos SCAIFE, incluidos los trozos de función del controlador para cada una de las llamadas de API a ese servidor para el que desarrollará el código interno.
Notas especiales para revisores de API: