análise estática de código: aplicações
TRANSCRIPT
![Page 1: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/1.jpg)
Análise Estática de Código:
Aplicações
Ricardo Terra
rterrabh [at] gmail.com
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 1 / 40
![Page 2: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/2.jpg)
CV
Nome: Ricardo Terra
Email: rterrabh [at] gmail.com
www: ricardoterra.com.br
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo),Post-Ph.D. (INRIA/Université Lille 1)
BackgroundAcadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos )
Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano )
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 2 / 40
![Page 3: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/3.jpg)
Introdução à AEC
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 3 / 40
![Page 4: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/4.jpg)
Problema (construção complexa, sujeito diversos problemas, erro humano)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 4 / 40
![Page 5: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/5.jpg)
Estado da Prática: CDT
(Crash Driven Testing)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 5 / 40
![Page 6: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/6.jpg)
Estado da Prática: CDT (Crash Driven Testing)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 5 / 40
![Page 7: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/7.jpg)
(Parênteses) Qual o objetivo de testes?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 6 / 40
![Page 8: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/8.jpg)
Atividades de V&V (Estamos construindo o produto corretamente-ver, correto-val)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 7 / 40
![Page 9: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/9.jpg)
(Parênteses) Qualidade de Código
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 8 / 40
![Page 10: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/10.jpg)
V&V [estática (inspeções, e.g., revisão de código, análises automatizadas, ver. formal) vs. dinâmica (testes, e.g., de defeitos e de validação); complementares]
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 9 / 40
![Page 11: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/11.jpg)
(Parênteses) Segundo Sommerville...
Herança Múltipla? (Ian Sommerville vs. Bertrand Meyer)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 10 / 40
![Page 12: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/12.jpg)
(Parênteses) Segundo Sommerville...
Herança Múltipla? (Ian Sommerville vs. Bertrand Meyer)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 10 / 40
![Page 13: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/13.jpg)
Análise Estática de Código (inspeções/análises automatizadas, reduzir erros apontando anomalias)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 11 / 40
![Page 14: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/14.jpg)
Ferramentas (Java, no caso)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 12 / 40
![Page 15: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/15.jpg)
Ferramentas (Eclipse, no caso)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 13 / 40
![Page 16: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/16.jpg)
Onde as ferramentas atuam?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 14 / 40
![Page 17: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/17.jpg)
Anomalias (erros/formas de programação/omissões que possivelmente gerariam erros)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 15 / 40
![Page 18: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/18.jpg)
(Parênteses) Estilo (e.g., Google)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 16 / 40
![Page 19: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/19.jpg)
(Parênteses) Estilo (e.g., Google)
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 16 / 40
![Page 20: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/20.jpg)
Perigo de Erro #1: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 17 / 40
![Page 21: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/21.jpg)
Falta de Estilo #1: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 18 / 40
![Page 22: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/22.jpg)
Perigo de Erro #2: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 19 / 40
![Page 23: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/23.jpg)
Falta de Estilo #2: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 20 / 40
![Page 24: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/24.jpg)
Perigo de Erro #3: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 21 / 40
![Page 25: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/25.jpg)
Falta de Estilo #3: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 22 / 40
![Page 26: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/26.jpg)
Perigo de Erro #4: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 23 / 40
![Page 27: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/27.jpg)
Falta de Estilo #4: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 24 / 40
![Page 28: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/28.jpg)
Perigo de Erro #5: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 25 / 40
![Page 29: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/29.jpg)
Falta de Estilo #5: Consegue identificá-lo?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 26 / 40
![Page 30: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/30.jpg)
Aplicações
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 27 / 40
![Page 31: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/31.jpg)
Comparativo de Ferramentas
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 28 / 40
![Page 32: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/32.jpg)
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada
![Page 33: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/33.jpg)
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada Implementada
![Page 34: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/34.jpg)
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada Implementada
![Page 35: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/35.jpg)
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada Implementada
![Page 36: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/36.jpg)
Conformidade Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 29 / 40
Planejada Implementada
![Page 37: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/37.jpg)
Conformidade Arquitetural
DCL
0: # definicoes de modulos #
1: on ly Factory can - c rea te Product2: Util can -only -depend $java , Util3: View cannot - access Model4: Product must- implement Serializable
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 30 / 40
![Page 38: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/38.jpg)
Conformidade Arquitetural – Linguagens Dinamicamente Tipadas
Parser dasrestrições
ArchRubyRestrições
Arquiteturais
Código Fonte
Parser docódigo fonte
Conformidade arquitetural
Relatório de violações
Visão da arquitetura
in1
in2
t1 t2 t3
out1
out2
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 31 / 40
![Page 39: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/39.jpg)
Conformidade Arquitetural – Integração Contínua
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 32 / 40
![Page 40: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/40.jpg)
Similaridade Estrutural
c l a s s Bar ex t end s X c l a s s Foo ex t end s X A a ; B b ;B b ; G g ;
exampleBar ( D d ) exampleFoo ( E e )a . f ( ) ; e . j ( ) ;d . g ( ) ; new A ( ) . f ( )
U = A, B, C , D, E , F , G , X , Y =⇒a = 3, b = 1 , c = 2, d = 3
Similaridade → 0.5
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
![Page 41: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/41.jpg)
Similaridade Estrutural
c l a s s Bar ex t end s X c l a s s Foo ex t end s X A a ; B b ;B b ; G g ;
exampleBar ( D d ) exampleFoo ( E e )a . f ( ) ; e . j ( ) ;d . g ( ) ; new A ( ) . f ( )
U = A, B, C , D, E , F , G , X , Y =⇒a = 3, b = 1 , c = 2, d = 3
Similaridade → 0.5
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
![Page 42: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/42.jpg)
Similaridade Estrutural
c l a s s Bar ex t end s X c l a s s Foo ex t end s X A a ; B b ;B b ; G g ;
exampleBar ( D d ) exampleFoo ( E e )a . f ( ) ; e . j ( ) ;d . g ( ) ; new A ( ) . f ( )
U = A, B, C , D, E , F , G , X , Y =⇒a = 3, b = 1 , c = 2, d = 3
Similaridade → 0.5
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 33 / 40
![Page 43: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/43.jpg)
Refatoração – Extract/Move Method
publicgclassgCggg...ggvoidgmethodM(Aga)gggggFoogfg=gnewgFoo();ggggifg(x)gggggggdoA(a);ggggggintgyg=ggetY();ggggggy++;ggggggdoB();ggggggggsuper.methodM();gggg...
A B C
candidate
1
2
3
4
Generation of Candidates Scoring Function Ranking and FilteringExtract Method
RecommendationsSource Code
JExtract
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 34 / 40
![Page 44: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/44.jpg)
(Parênteses) Cadeia
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 35 / 40
![Page 45: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/45.jpg)
Conformidade Arquitetural – Descoberta Arquitetural
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 36 / 40
![Page 46: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/46.jpg)
Considerações Finais
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 37 / 40
![Page 47: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/47.jpg)
Considerações Finais
Como produzir código de qualidade?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
![Page 48: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/48.jpg)
Considerações Finais
Como produzir código de qualidade?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
![Page 49: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/49.jpg)
Considerações Finais
Como produzir código de qualidade?
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 38 / 40
![Page 50: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/50.jpg)
Bala de Prata
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 39 / 40
![Page 51: Análise Estática de Código: Aplicações](https://reader033.vdocuments.com.br/reader033/viewer/2022051706/58f1c8871a28ab9b748b45c3/html5/thumbnails/51.jpg)
Obrigado!!!
Ricardo Terra (rterrabh [at] gmail.com) AEC: Aplicações Agosto, 2015 40 / 40