Static Code Analyzer - Part I

29
Motiva¸c˜ ao e Tecnologias Contextualiza¸c˜ ao Modela¸c˜ ao Perguntas SAAP - Software para An´ alise e Avalia¸c˜ ao de Programas Jos´ e Pedro Silva Pedro Faria Ulisses Costa Engenharia de Linguagens Projecto integrado December 12, 2010 Jos´ e Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para An´ alise e Avalia¸c˜ ao de Programas

description

 

Transcript of Static Code Analyzer - Part I

Page 1: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

SAAP - Software para Analise e Avaliacao deProgramas

Jose Pedro Silva Pedro Faria Ulisses Costa

Engenharia de LinguagensProjecto integrado

December 12, 2010

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 2: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Index

1 Motivacao e Tecnologias

2 Contextualizacao

3 ModelacaoModelacao de dados

XMLXSD

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 3: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Motivacao e Objectivos

Aprofundar e demonstrar conhecimentos em:

Desenhar arquitectura de um sistema de informacao

Desenvolvimento web

Linguagens de Scripting

Bases de dados

Processamentos de texto

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 4: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Tecnologia

Principais ferramentas a usar:

RoR - interface web

Perl - scripting

DB2 - motor de base de dados

Haskell

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 5: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Index

1 Motivacao e Tecnologias

2 Contextualizacao

3 ModelacaoModelacao de dados

XMLXSD

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 6: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Descricao do Sistema

Descricao do sistema e funcionalidades:

Disponivel atraves de uma interface web

Criacao de concursos e enunciados

Permite a submissao de programas

Avalia os programas submetidos

Gera metricas para programas existentes no sistema

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 7: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Utilizadores do sistema - Docente

Pode criar, editar e eliminar concursos e enunciados

Pedir ao sistema para gerar metricas

Consultar todo o tipo de resultados

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 8: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Utilizadores do sistema

Admin Entidade com mais poder no sistema, pode criarcontas para docentes

Grupo Pode submeter ficheiros que serao avaliados pelosistema

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 9: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Index

1 Motivacao e Tecnologias

2 Contextualizacao

3 ModelacaoModelacao de dados

XMLXSD

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 10: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelacao informal da arquitectura

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 11: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelacao formal

{existsInDatabase(u)}login :: u ∼ Username × Hash→ SessionID → Error + SessionID{}

{existeSession(s) ∧ isProf (s) ∧ (notEmpty ◦ getExercice) c}createContest :: s ∼ SessionID → c ∼ Contest → 1{(notEmpty ◦ getDict) c}

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 12: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelacao formal

data Dict a b = (a× b)∗

data Exercicio = Exercicio Enunciado (Dict Input Output)data Contest = Contest Nome Tipo Exercicio∗

{existeSession(s) ∧ isProf (s) ∧ (not ◦ exist)(Exercicio e d)}createExercice :: s ∼ SessionID → e ∼ Enunciado → d ∼ (Dict a b)→ 1{exerciceCreated(Exercicioed)}

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 13: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelacao formal

{existSession(s) ∧ contestNotFull(c)}registerOnContest :: s ∼ SessionID → c ∼ Contest → Credenciais{}

{existeSession(s) ∧ isProf (s) ∧ contestIsClosed(c)}consultarLogsContest :: s ∼ SessionID → c ∼ Contest → LogsContest{}

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 14: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelacao formal

{}geraReport :: e ∼ Exercicio → res ∼ Resolucao → Report{}

geraReportBugCompile :: Exercicio → Error → Report

geraReportBugCompare :: Exercicio → Errado → Report

geraReportNoBug :: Exercicio → Resolucao → Report

execute :: Program→ Exercicio → ResolucaoProposta

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 15: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelacao formal

geraReport :: Exercicio -> Resolucao -> Report

geraReport exer res = do

case compile res of

(Left error) -> geraReportBugCompile error res

(Right p) ->

let resProps = execute p exer

in case (compare exer resProps) of

(Left certo) -> geraReportNoBug e res

(Right errado) -> geraReportBugCompare errado

res

geraReport exer res =

compile res >>= \p -> compare exer (execute p exer)

>>= \c -> geraReportNoBug exer res

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 16: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Index

1 Motivacao e Tecnologias

2 Contextualizacao

3 ModelacaoModelacao de dados

XMLXSD

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 17: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - Concurso, tentativa e enunciado

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 18: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - Grupo e Doecente/Admin

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 19: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - XML - Enunciado

<?xm l v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?><Enunciado x m l n s : x s i=” h t t p : //www. w3 . org /2001/XMLSchema−i n s t a n c e ”

xs i :noNamespaceSchemaLocat ion=” e n u n c i a d o . xsd ”><i d C o n c u r s o> 1 </ i d C o n c u r s o><Peso>20</ Peso><T i t u l o> E x e r c i c i o 1 </ T i t u l o><D e s c r i c a o> Some os numeros que l h e sao p a s s a d o s como argumento , e a p r e s e n t e

o r e s u l t a d o . </ D e s c r i c a o><Exemplo>I n p u t : 1 1 1 1 1 Output : 5</ Exemplo><Docente> PRH </ Docente><FuncAval>D i f f</ FuncAval><L i n g u a g e n s>

<Linguagem>C</ Linguagem></ L i n g u a g e n s>

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 20: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - XML - Enunciado - Part2

<D i c t><Teste>

<Nome>L i s t a v a z i a</Nome><I n p u t></ I n p u t><Output>0</ Output>

</ Teste><Teste>

<Nome>L i s t a c / 1 elem</Nome><I n p u t>1</ I n p u t><Output>1</ Output>

</ Teste><Teste>

<Nome>L i s t a c / v a r i o s elem</Nome><I n p u t> 2 3 4 5 </ I n p u t><Output>14</ Output>

</ Teste></ D i c t>

</ Enunciado>

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 21: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - XML - Tentativa

<?xm l v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?><Enunciado x m l n s : x s i=” h t t p : //www. w3 . org /2001/XMLSchema−i n s t a n c e ”

xs i :noNamespaceSchemaLocat ion=” t e n t a t i v a . xsd ”><i d C o n c u r s o>1</ i d C o n c u r s o><i d E n u n c i a d o>1</ i d E n u n c i a d o><idGrupo>36</ idGrupo>

<data>2010−12−08</ data><hora>16 : 3 3 : 0 0</ hora>

<compi lou>1</ compi lou>

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 22: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - XML - Tentativa - Part2

<D i c t><Teste>

<Nome>L i s t a v a z i a</Nome><I n p u t></ I n p u t><Output>0</ Output>

</ Teste><Teste>

<Nome>L i s t a c / 1 elem</Nome><I n p u t>1</ I n p u t><Output>1</ Output>

</ Teste><Teste>

<Nome>L i s t a c / v a r i o s elem</Nome><I n p u t> 2 3 4 5 </ I n p u t><Output>14</ Output>

</ Teste></ D i c t><p a t h M e t r i c a s>s a s a s</ p a t h M e t r i c a s>

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 23: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - XML - Tentativa - Part3

<c o d i g o F o n t e><nome>prog . c</nome><c o d i g o>

<! [CDATA[#i n c l u d e <s t d i o . h>

. . . r e s t a n t e c o d i g o . . .

] ]></ c o d i g o>

</ c o d i g o F o n t e>

</ Enunciado>

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 24: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - excerto do XSD do Enunciado

Exemplo de elemento com restricoes:

<e d : e l e m e n t name=” Peso ” d e f a u l t=”25”><e d : s i m p l e T y p e>

<e d : r e s t r i c t i o n base=” e d : i n t e g e r ”><e d : m i n I n c l u s i v e v a l u e=”0”/><e d : m a x I n c l u s i v e v a l u e=” 100 ”/>

</ e d : r e s t r i c t i o n></ e d : s i m p l e T y p e>

</ e d : e l e m e n t>

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 25: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - excerto do XSD do Enunciado

Exemplo de elemento com restricoes:

<e d : e l e m e n t name=” Linguagem ” maxOccurs=” unbounded ”><e d : s i m p l e T y p e><e d : r e s t r i c t i o n base=” e d : s t r i n g ”>

<e d : e n u m e r a t i o n v a l u e=”C”/><e d : e n u m e r a t i o n v a l u e=” Java ”/><e d : e n u m e r a t i o n v a l u e=” H a s k e l l ”/>

</ e d : r e s t r i c t i o n></ e d : s i m p l e T y p e>

</ e d : e l e m e n t>

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 26: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - Diagrama correspondete ao XSD doEnunciado

Figure: diagrama do schema para o enunciado

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 27: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - excerto do XSD da Tentativa

Exemplo de elemento que pode ocorrer mais do que uma vez:

<t t : e l e m e n t name=” D i c t ”><t t : c o m p l e x T y p e><t t : s e q u e n c e>

<t t : e l e m e n t name=” Teste ” maxOccurs=” unbounded ”><t t : c o m p l e x T y p e>

<t t : s e q u e n c e><t t : e l e m e n t name=”Nome” t y p e=” t t : s t r i n g ”/><t t : e l e m e n t name=” I n p u t ” t y p e=” t t : s t r i n g ”/><t t : e l e m e n t name=” Output ” t y p e=” t t : s t r i n g ”/></ t t : s e q u e n c e>

</ t t : c o m p l e x T y p e></ t t : e l e m e n t>

</ t t : s e q u e n c e></ t t : c o m p l e x T y p e>

</ t t : e l e m e n t>

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 28: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Modelacao de dados

Modelo de dados - Diagrama correspondete ao XSD daTentativa

Figure: diagrama do schema para a tentativa

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas

Page 29: Static Code Analyzer - Part I

Motivacao e TecnologiasContextualizacao

ModelacaoPerguntas

Perguntas

?

Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas