Essa distribuição dos arquivos de definição da API do SCAIFE inclui arquivos formatados YAML, JSON e HTML. Na maioria dos lançamentos, há um arquivo em cada formato de arquivo para cada um dos cinco módulos SCAIFE.
No lançamento do SCAIFE APIs de março de 2021, lançamos apenas os arquivos YAML. Esta versão tem todos os nossos módulos atualizados para usar o formato OpenAPI versão 3. No futuro, também atualizaremos nossos scripts que fazem geração automatizada de código para JSON e HTML, para trabalhar com a versão 3 do OpenAPI.
O arquivo YAML especifica a definição da API da Análise de Código Fonte (SCAIFE) [1, 2, 3, 5], em um formato que os desenvolvedores podem usar facilmente para visualizar, modificar e gerar automaticamente o código de (por exemplo, com as ferramentas Swagger-Editor e Swagger-Codegen [4]). O arquivo YAML foi quase totalmente criado manualmente pelos desenvolvedores da SEI. As únicas coisas que foram geradas automaticamente pelas ferramentas de arrogância no arquivo YAML são alguns dos exemplos.
Os arquivos JSON foram gerados automaticamente executando os arquivos Swagger-CodeGen nos arquivos Swagger.yaml, já que alguns desenvolvedores preferem visualizar a API no JSON ou ter ferramentas de geração de código que funcionam melhor com o JSON.
Os arquivos HTML também especificam a definição da API do SCAIFE, em um formato legível por pessoas que preferem não (ou não têm ferramentas para) ler arquivos YAML. Os arquivos HTML podem ser visualizados em qualquer navegador da Web padrão. Os arquivos HTML contêm hiperlinks, e o whitepaper referenciado abaixo fornece orientações sobre como entender os arquivos HTML.
O SCAIFE é uma arquitetura que suporta classificação e priorização de alerta de análise estática. Ele foi projetado para que uma grande variedade de ferramentas de análise estática possa se integrar ao sistema usando a definição da API que estamos desenvolvendo. A partir da SCAIFE API Versions 2.0.0, adicionamos chamadas de API para permitir que o SCAIFE receba atualizações sobre comissões de código e novas saídas de análise estática dos servidores de integração contínua (IC). Esperamos que a API seja de interesse das organizações que desenvolvem e/ou pesquisam ferramentas de análise estática, agregadores de auditoria de alerta de análise estática e outras estruturas de auditoria de alerta de análise estática. Essa definição da API da SCAIFE pode ser referenciada pelos desenvolvedores, para ajudá -los a estimar o esforço de desenvolvimento que seria obrigado a modificar as ferramentas de sua organização para fazer e responder às chamadas da SCAIFE API. Além disso, essa definição de API está sendo publicada com o objetivo de gerar feedback de desenvolvedores e organizações interessadas em implementar a API da SCAIFE, para ajudar a melhorar a API da SCAIFE para se tornar mais facilmente utilizável pelos desenvolvedores para uma ampla variedade de ferramentas de análise estática. Um sistema de protótipo que implementa foi distribuído aos colaboradores de projetos de pesquisa.
A arquitetura SCAIFE mostrada na figura inclui cinco servidores. O sistema é modular, projetado para que cada módulo possa ser instanciado por diferentes ferramentas/software, enquanto o sistema geral deve manter a mesma funcionalidade. O módulo da interface do usuário possui um front-end da GUI que permite a exibição de alertas de análise estática (FFSA) e armazena projetos locais. A arquitetura do SCAIFE visa permitir uma ampla variedade de ferramentas da FFSA e alertar as ferramentas de agregador para obter a funcionalidade de classificação e priorização, interagindo como um módulo da interface do usuário com o restante do sistema SCAIFE. Essas ferramentas devem instanciar as chamadas da API do módulo da interface do usuário para os outros servidores, para fazê -lo. Os dados do módulo DataHub armazenam dados (ferramenta, alerta, projeto, meta-dados do conjunto de testes, adjudicatons, etc.) de um ou mais módulos da interface do usuário e adjudicam alguns meta-alertas. O módulo de estatística cria, executa e lojas classificadores e algoritmos heurísticos adaptativos (aprendizado ativo) e algoritmos automatizados de hiper-parâmetro. O módulo de priorização armazena fórmulas de priorização e campos de priorização comprados pelo usuário. O módulo de registro é usado para autenticação e controle de acesso. Ele gera tokens de registro, além de fornecer autenticação e autorização básica para outros servidores.
Selecione um dos cinco módulos para começar a inspecionar:: a maioria dos desenvolvedores de ferramentas do FFSA e alerta de agregação estará mais interessada na definição da API do módulo de interface do usuário. Para permitir que sua ferramenta interaja com o sistema SCAIFE, sua ferramenta precisa instanciar a API do módulo da interface do usuário. No entanto, alguns pesquisadores/desenvolvedores se concentraram em melhorar a classificação, o aprendizado ativo e a otimização automatizada de hiper parâmetro, desejará se concentrar na API do módulo de estatística. Eles podem desenvolver novos algoritmos e incorporá -los modularmente dentro de um protótipo que desenvolvemos (se eles forem nosso colaborador de pesquisa) ou simplesmente modificar suas próprias ferramentas para instanciar a API do módulo de estatística e depois interagir com um sistema SCAIFE com outros módulos desenvolvidos por diferentes pessoas (EG, para um módulo de interface do usuário que eles poderiam usar a versão da escala de escala para desenvolver -se para o trabalho desenvolvido para o trabalho desenvolvido para o trabalho de trabalho para trabalhar com a SCR. Da mesma forma, alguns pesquisadores/desenvolvedores têm foco em melhorar o desempenho, a segurança, a resiliência e a escalabilidade do armazenamento de dados agregado e eventualmente esperado para ser grande. Essas pessoas vão querer se concentrar na API do módulo Datahub. Esperamos que um número menor de pesquisadores/desenvolvedores implemente módulos de registro ou priorização. No entanto, suas APIs ainda serão úteis para revisar, pois outros servidores precisam interagir com eles, seja em um cliente ou em uma função de servidor.
Se puder, incentivamos você a usar o editor de swagger de código aberto (e gratuito) [4] ou uma ferramenta de visualização e edição de API semelhante. Abra um arquivo de definição da API (.yaml ou .json) nisso. O Swagger Editor fornece uma maneira fácil de usar, fazer testes simples e modificar a definição da API.
Caso contrário, veja o arquivo de definição da API HTML em um navegador da Web. Dessa forma, os modelos e métodos podem ser acessados seguindo os hiperlinks associados a cada recurso na seção de definição da API da SCAIFE abaixo.
Cada seção de definição da API é categorizada com base nos módulos de origem e destino das chamadas da API. Por exemplo, a seção Rapid Models Registration and Login Module API Definition contém apenas uma categoria de chamadas de API sob o rótulo UITOREGISTRATION. A fonte (solicitação) das chamadas da API vem do módulo da interface do usuário e as chamadas da API são encaminhadas para o destino - o módulo de registro. Os modelos de dados são definidos na seção inferior do arquivo.
Espero que você não apenas inspecione a API, você a usará para integrar sua ferramenta ou codificação em um sistema SCAIFE. Você pode gerar automaticamente código a partir da definição da API YAML ou JSON de qualquer um dos módulos SCAIFE, usando o Swagger CodeGen [4] ou ferramentas semelhantes. Isso não apenas tem o benefício de acelerar e automatizar o desenvolvimento do código, mas também garante que o código instancie a API do SCAIFE. Se você possui uma ferramenta para a qual deseja gerar código do cliente (significando o código que fará uma chamada para um servidor SCAIFE definido na definição da API desse servidor), ferramentas como Swagger CodeGen gerarão código em qualquer uma ampla variedade de idiomas. Você pode colocar o código do cliente gerado em seu próprio código no local certo e usar suas próprias variáveis como parâmetros. Da mesma forma, você pode gerar automaticamente o código do servidor para qualquer um dos módulos da SCAIFE, incluindo stubs de função do controlador para cada uma das chamadas da API para o servidor para o qual você preencherá o código interno.
Notas especiais para revisores de API: