Fundamentos de An - PowerPoint PPT Presentation

About This Presentation
Title:

Fundamentos de An

Description:

Fundamentos de An lise Est tica * * * * * * * * Framework Em geral, 4 fun es descrevem uma an lise intra-procedural: in, out, kill e gen Ilustra o in out gen ... – PowerPoint PPT presentation

Number of Views:54
Avg rating:3.0/5.0
Slides: 46
Provided by: mba169
Category:

less

Transcript and Presenter's Notes

Title: Fundamentos de An


1
Fundamentos de Análise Estática
2
O que é?
  • Análise automática feita em código sem execução

3
Objetivo (Para que serve?)
  • Verificação de propriedades
  • Entendimento de código

Foco desta aula
4
Objetivo (Para que serve?)
  • Verificação de propriedades
  • Entendimento de código

Foco desta aula
Entendimento de código pode facilitar verificação!
5
Várias formas (Como?)
  • Sistemas de tipos
  • Verificação de restrições
  • Análise de dataflow

Foco desta aula
6
Conceitos Básicos
7
Aproximação de soluções
  • Propriedades complexas
  • Análise é indecidível ou alto custo

8
Aproximação de soluções
  • Propriedades complexas
  • Análise é indecidível ou alto custo

Maioria das propriedades interessantes são
complexas!
9
Aproximação de soluções
  • Propriedades complexas
  • Análise é indecidível ou alto custo
  • Abordagem aproximar espaço de solução
  • super-aproximação falso positivos
  • sub-aproximação falso negativos

comum
10
Aproximação de soluções
  • Propriedades complexas
  • Análise é indecidível ou alto custo
  • Abordagem aproximar espaço de solução
  • super-aproximação falso positivos
  • sub-aproximação falso negativos
  • Prática
  • Balanço entre falso positivos e negativos e
    escalabilidade potencializa utilidade da análise

comum
Uma análise é conservadora quando resultado
inclui necessariamente todas as soluções. Por
exemplo, uma análise para encontrar erros de tipo
é conservadora quando não permite escapar nenhum
erro. Por outro lado, geralmente, reporta erros
espúrios (i.e., alarmes falso).
11
Frequentemente balanço entre falso positivos,
negativos, e escalabilidade é mais importante
(i.e., útil) que garantias fortes de correção (0
falso negativos) e completude (0 falso
positivos).
12
Um pouco de teoria...
13
Teoria dos Reticulados (Lattice)
  • O que estes grafos tem em comum?
  • Obs. vértice denota relação de ordem

14
Ordem Parcial
  • Ordem parcial é uma relação binária
  • reflexiva, transitiva e anti-simétrica
  • Conceitos associados
  • Upper Bound
  • Least Upper Bound (LUB)
  • Lower Bound
  • Greatest Lower Bound (GLB)

15
LUB
LUB para este subconjunto?
16
LUB
LUB para este subconjunto?
17
GLB
GLB para este subconjunto?
18
GLB
GLB para este subconjunto?
19
Top e Bottom
Top
Bottom
20
Lattice
  • Reticulado
  • Ordem parcial onde qualquer subconjunto de
    elementos da relação possui LUB e GLB associado
  • Esta ordem parcial é um lattice?

21
Exemplos Lattices
22
Exemplo relação de inclusão de inteiros 0,1,2,3
23
Função monotônica e Ponto Fixo
  • Função f L ? L
  • Monotônica
  • Não decresce. Conceitualmente, acumula informação

24
Função monotônica e Ponto Fixo
  • Função f L ? L
  • Monotônica
  • Não decresce. Conceitualmente, acumula
    informação
  • Ponto fixo fix(f), f(fix(f)) fix(f)
  • Teorema do ponto fixo (Tarski)
  • Toda função monotônica f admite ponto fixo em um
    reticulado L de altura finita.

25
Ilustração
  • Iterações sucessivas de uma função
  • Acumula informação (f é monotônica)
  • Para em ponto fixo quando não há mais informação
    para se descobrir

26
Relação com nosso problema
O domínio e contra-domínio de f representam
alguma informação de nosso interesse no programa.
Por exemplo, definições alcançáveis em um ponto
do programa. Tipicamente, f opera em uma
representação abstrata do programa. Por exemplo,
o control-flow graph (CFG) ou o inter. flow graph
(IFG). Uma iteração de f propaga informação nesta
estrututura. Por exemplo, propaga informação
armazenada nos nós pelos vértices de um CFG.
27
Um pouco de prática...
28
Perspectiva
  • Análise estática propaga informação usando
    estrutura do programa
  • Intra-procedural fluxo de controle de um
    método/função (CFG)
  • Inter-procedural fluxo de chamadas entre
    métodos/funções (IFG)

29
Perspectiva
  • Análise estática propaga informação usando
    estrutura do programa
  • Intra-procedural fluxo de controle de um
    método/função (CFG)
  • Inter-procedural fluxo de chamadas entre
    métodos/funções (IFG)

30
CFG
31
Quiz
  • Quais as definições de f alcançáveis no nó return
    f? (assuma que uma def. consiste de um nome de
    variável id. do bloco básico)

32
Como mecanizar análise mental?
  • Associado a cada nó i
  • Informação acumulada xi
  • No exemplo anterior xi armazena conjunto de
    definições
  • Função (monotônica) de transferência Fi

33
Chaotic Iteration
Simplificação na prática, Fi lê apenas conteúdo
em nós vizinhos a i!
34
Framework
  • Em geral, 4 funções descrevem uma análise
    intra-procedural in, out, kill e gen
  • Ilustração

in
gen
kill
out
35
Exemplo Reachable Definitions
  • inb U OUTk, for all k ? predb
  • outb (INb killb) genb
  • killb definições mortas em b
  • genb novas definições (não mortas) em b

36
Existem vários frameworks de análise que permitem
escrever basicamente estas 4 funções e obter sua
análise intra-proc. E.g., SOOT
(http//www.sable.mcgill.ca/soot)
37
Outros Detalhes
  • Generalização
  • May/Must
  • Forward/Backward
  • Reachable Defintions é uma análise
  • May e Forward

38
Perspectiva
  • Análise estática propaga informação usando
    estrutura do programa
  • Intra-procedural fluxo de controle de um
    método/função (CFG)
  • Inter-procedural fluxo de chamadas entre
    métodos/funções (IFG)

39
Similaridades entre Inter e Intra
  • Informação se propaga em um grafo
  • Informação e função de transferência associada a
    cada nó

Grafo inclui informação de chamador e chamado
40
Diferenças
  • Representação do grafo é diferente
  • Context insensitivity alguns caminhos (de
    chamadas) são explorados, mas não são possíveis!

f() calls g()
h() calls g()
Caixinha é um CFG
g()
returns from g() back to f()
returns from g() back to h()
41
Diferenças
  • Representação do grafo é diferente
  • Context insensitivity alguns caminhos (de
    chamadas) são explorados, mas não são possíveis!

propagada informação acumulada no contexto de
chamada de h() para o retorno da chamada de g()
em f()!
f() calls g()
h() calls g()
g()
returns from g() back to f()
returns from g() back to h()
42
Inlining
  • Uma tentativa é representar um CFG do programa
    fazendo inlining de função
  • Problemas
  • Como tratar recursão?
  • Não escala (vários contextos de chamada)

43
Existe uma variedade de representações de
interprocedural flow graphs (IFGs). Por exemplo,
IFG proposto por Harrold e Soffa em Efficient
Computation of Interprocedural Definition-Use
Chains, TOPLAS 1994.
44
Considerações Finais
  • Representação do programa pode facilitar muito a
    análise do programa
  • 3-address
  • SSA

O framework SOOT oferece 4 representações
(formatos) do programa de entrada.
45
Leitura adicional
  • Michael Shwartzbachs Lecture Notes on Static
    Analysis http//www.brics.dk/mis/static.pdf
Write a Comment
User Comments (0)
About PowerShow.com