Da investigação a ferramentas reais de análise e testes

A Interpretica nasceu da investigação em análise de programas. Os métodos que publicamos e prototipamos passam diretamente para o Visao, o TS Factory, o Delta e o Midair.

Publicações revistas por pares. Investigação que entra nas nossas ferramentas.

Maxim Menshikov (Fundador e CEO) tem vários trabalhos revistos por pares sobre análise estática, representações intermédias para análise de programas e ferramentas para programadores.

Vários destes resultados fazem hoje parte da nossa plataforma, entre eles a Midair IR e o motor Visao.

7artigos selecionados
5conferências e revistas
2017primeiro artigo
Publicado em
ICCSA GRID TMPA SEIM Proceedings of ISP RAS
Ver no Google Scholar

Linhas de investigação. Cada uma deu origem a algo que entregamos.

Cada linha resolve um problema concreto na análise e nos testes de software complexo. Todas produziram resultados que hoje entregamos ou usamos.

Análise estática independente da linguagem

Um analisador, muitas linguagens. Em vez de manter uma ferramenta para cada linguagem, convertemos o código-fonte numa representação semântica comum e raciocinamos sobre ela. Assim, um detetor escrito uma vez funciona em toda a base de código.

Resultado
Midair IRVisao

A representação intermédia do Midair e o motor Visao.

Midair: An Intermediate Representation for Multi-purpose Program Analysis (ICCSA 2020); Scalable semantic virtual machine framework for language-agnostic static analysis (GRID 2018).

Raciocinar sobre o comportamento dos programas

Combinamos model checking com interpretação abstrata para explorar como o código se comporta ao longo dos caminhos de execução. Assim encontramos defeitos que nascem de interações complexas dentro de um programa, para lá dos padrões de bugs conhecidos.

Resultado
EquidVisao

O Equid, a nossa ferramenta anterior de análise estática, é o antecessor direto do atual motor Visao. Os detetores sensíveis ao caminho do Visao nasceram deste trabalho.

Equid: a static analysis framework for industrial applications (ICCSA 2019).

Qualidade dos relatórios: ocorrências que pode tratar

Uma ocorrência só é útil se um engenheiro puder agir sobre ela. Estudamos como medir e melhorar a completude e a relevância dos resultados da análise. Estudamos também como reduzir os falsos positivos que minam a confiança.

Resultado
5W+1HVisao

A medida de qualidade de relatórios 5W+1H, que orienta a forma como o Visao ordena e apresenta as ocorrências.

5W+1H static analysis report quality measure (TMPA 2017).

Análise residente e escalável

A análise deve correr de forma contínua e incremental em grandes bases de código, sem um passo lento em lote. Estudamos analisadores residentes, que ficam sempre ativos, e modelos de serviço para oferecer análise em grande escala.

Resultado
VisaoCI/CD

A forma como o Visao se integra em CI/CD e se mantém rápido em projetos grandes.

Towards a resident static analysis (ICCSA 2019); Review of static analyzer service models (Proceedings of ISP RAS, 2021).

Sistemas embebidos e com recursos limitados

Testes e virtualização para dispositivos com poucos recursos, firmware e hardware de rede. Aqui, reproduzir o ambiente exato é metade do problema. Estudamos como isolar estes alvos, guardar snapshots do seu estado e correr testes neles de forma fiável.

Resultado
TS FactoryDelta

Orienta os laboratórios de dispositivos do TS Factory e a captura em tempo de execução do Delta.

Design and testing of an LXC-based virtualization system for resource-constrained MIPS devices (SEIM 2018).

Testes distribuídos e observabilidade em tempo de execução

Como correr grandes cenários de teste com vários hosts e registar o ambiente exato de onde veio cada resultado. E como ligar as evidências de execução às ocorrências no código que as explicam.

Resultado
TS FactoryDeltaMidair

O TS Factory (testes distribuídos) e o Delta (monitorização em tempo de execução), ligados pelo Midair.

Publicações selecionadas. Onze anos de análise de programas.

Lista completa e citações
  1. 2021
    • Review of static analyzer service modelsProceedings of ISP RAS
  2. 2020
    • Midair: An Intermediate Representation for Multi-purpose Program AnalysisICCSA
  3. 2019
    • Equid: a static analysis framework for industrial applicationsICCSA
    • Towards a resident static analysisICCSA
  4. 2018
    • Scalable semantic virtual machine framework for language-agnostic static analysisGRID
    • Design and testing of an LXC-based virtualization system for resource-constrained MIPS devicesSEIM
  5. 2017
    • 5W+1H static analysis report quality measureTMPA