Title: Fundamentos de An
1Fundamentos de Análise Estática
2O que é?
- Análise automática feita em código sem execução
3Objetivo (Para que serve?)
- Verificação de propriedades
- Entendimento de código
Foco desta aula
4Objetivo (Para que serve?)
- Verificação de propriedades
- Entendimento de código
Foco desta aula
Entendimento de código pode facilitar verificação!
5Várias formas (Como?)
- Sistemas de tipos
- Verificação de restrições
- Análise de dataflow
Foco desta aula
6Conceitos Básicos
7Aproximação de soluções
- Propriedades complexas
- Análise é indecidível ou alto custo
8Aproximação de soluções
- Propriedades complexas
- Análise é indecidível ou alto custo
Maioria das propriedades interessantes são
complexas!
9Aproximaçã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
10Aproximaçã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).
11Frequentemente 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).
12Um pouco de teoria...
13Teoria dos Reticulados (Lattice)
- O que estes grafos tem em comum?
- Obs. vértice denota relação de ordem
14Ordem 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)
15LUB
LUB para este subconjunto?
16LUB
LUB para este subconjunto?
17GLB
GLB para este subconjunto?
18GLB
GLB para este subconjunto?
19Top e Bottom
Top
Bottom
20Lattice
- Reticulado
- Ordem parcial onde qualquer subconjunto de
elementos da relação possui LUB e GLB associado - Esta ordem parcial é um lattice?
21Exemplos Lattices
22Exemplo relação de inclusão de inteiros 0,1,2,3
23Função monotônica e Ponto Fixo
- Função f L ? L
- Monotônica
- Não decresce. Conceitualmente, acumula informação
24Funçã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.
25Ilustraçã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
26Relaçã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.
27Um pouco de prática...
28Perspectiva
- 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)
29Perspectiva
- 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)
30CFG
31Quiz
- 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)
32Como 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
33Chaotic Iteration
Simplificação na prática, Fi lê apenas conteúdo
em nós vizinhos a i!
34Framework
- Em geral, 4 funções descrevem uma análise
intra-procedural in, out, kill e gen - Ilustração
in
gen
kill
out
35Exemplo 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
36Existem 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)
37Outros Detalhes
- Generalização
- May/Must
- Forward/Backward
- Reachable Defintions é uma análise
- May e Forward
38Perspectiva
- 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)
39Similaridades 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
40Diferenç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()
41Diferenç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()
42Inlining
- 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)
43Existe 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.
44Consideraçõ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.
45Leitura adicional
- Michael Shwartzbachs Lecture Notes on Static
Analysis http//www.brics.dk/mis/static.pdf