SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Objectivos
                            Aplica¸˜o Web
                                  ca
                                   Metricas
                Conclus˜o e trabalho futuro
                       a




SOPAS - Submiss˜o Online Para An´lise de
               a                a
           Software (fase 4)

       Jos´ Pedro Silva
          e                             Pedro Faria          Ulisses Costa

                              Engenharia de Linguagens
                                 Projecto integrado


                                   June 27, 2011




Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
   e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                              a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca
                                             Metricas
                          Conclus˜o e trabalho futuro
                                 a

Index


  1   Objectivos


  2   Aplica¸˜o Web
            ca
        Correc¸˜o de bugs
               ca
        Adi¸˜o de funcionalidades
            ca


  3   Metricas


  4   Conclus˜o e trabalho futuro
             a




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                    Aplica¸˜o Web
                                          ca
                                           Metricas
                        Conclus˜o e trabalho futuro
                               a

At´ agora:
  e




   Concretizado at´ ao ´
                  e    ınicio da quarta fase:
       Termino da aplica¸˜o web e adi¸˜o de funcionalidades extra
                        ca           ca
       Implementa¸˜o de um script para instala¸˜o do sistema
                 ca                           ca
       Melhoramento do interface pelo terminal
       Implementa¸˜o de algumas m´tricas
                 ca              e




        Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
           e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                      a                a
Objectivos
                                    Aplica¸˜o Web
                                          ca
                                           Metricas
                        Conclus˜o e trabalho futuro
                               a

Motiva¸˜o e Objectivos
      ca



   Objectivos para terceira fase:
       Desenvolvimento de uma API para gerir as m´tricas
                                                 e
       Terminar a implementa¸˜o das m´tricas que pretend´
                            ca       e                  ıamos
       Melhoramento da script de instala¸˜o do sistema (dificil!)
                                        ca
       Permitir inser¸˜o de informa¸˜o pelo terminal
                     ca            ca
       Corrigir e melhorar a aplica¸˜o Web
                                   ca




        Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
           e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                      a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca           Correc¸˜o de bugs
                                                               ca
                                             Metricas    Adi¸˜o de funcionalidades
                                                            ca
                          Conclus˜o e trabalho futuro
                                 a

Index


  1   Objectivos


  2   Aplica¸˜o Web
            ca
        Correc¸˜o de bugs
               ca
        Adi¸˜o de funcionalidades
            ca


  3   Metricas


  4   Conclus˜o e trabalho futuro
             a




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca           Correc¸˜o de bugs
                                                               ca
                                             Metricas    Adi¸˜o de funcionalidades
                                                            ca
                          Conclus˜o e trabalho futuro
                                 a

Index


  1   Objectivos


  2   Aplica¸˜o Web
            ca
        Correc¸˜o de bugs
               ca
        Adi¸˜o de funcionalidades
            ca


  3   Metricas


  4   Conclus˜o e trabalho futuro
             a




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                   Aplica¸˜o Web
                                         ca           Correc¸˜o de bugs
                                                            ca
                                          Metricas    Adi¸˜o de funcionalidades
                                                         ca
                       Conclus˜o e trabalho futuro
                              a

Correc¸˜o de bugs
      ca
      Adicionada informa¸˜o que estava em falta:
                        ca
             warnings ou erros emitidos na altura da compila¸˜o j´ s˜o
                                                            ca a a
             guardados e apresentados ao utilizador




       Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
          e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                     a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca           Correc¸˜o de bugs
                                                               ca
                                             Metricas    Adi¸˜o de funcionalidades
                                                            ca
                          Conclus˜o e trabalho futuro
                                 a

Index


  1   Objectivos


  2   Aplica¸˜o Web
            ca
        Correc¸˜o de bugs
               ca
        Adi¸˜o de funcionalidades
            ca


  3   Metricas


  4   Conclus˜o e trabalho futuro
             a




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                    Aplica¸˜o Web
                                          ca           Correc¸˜o de bugs
                                                             ca
                                           Metricas    Adi¸˜o de funcionalidades
                                                          ca
                        Conclus˜o e trabalho futuro
                               a

Adi¸˜o de funcionalidades
   ca
   Prepara¸˜o do sistema para:
          ca
       gerar relat´rio dos resultados e de m´tricas para determinado
                  o                         e
       concurso
       permitir o download ou a visualiza¸˜o dentro do browser dos
                                         ca
       relat´rios
            o




        Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
           e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                      a                a
Objectivos
                                   Aplica¸˜o Web
                                         ca           Correc¸˜o de bugs
                                                            ca
                                          Metricas    Adi¸˜o de funcionalidades
                                                         ca
                       Conclus˜o e trabalho futuro
                              a

Gerar relat´rio de resultados
           o



       Ir ` tabela de melhores resultados e ir buscar todas as
          a
       entradas para o concurso em quest˜oa
       Para cada utilizador encontrar o resultado de cada enunciado
       Apenas contar os que estiverem 100% correctos
       Calcular o resultado de cada enunciado, tendo em conta o seu
       peso no concurso
       Apresentar o resultado calculado e o tempo de execu¸˜o
                                                          ca




       Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
          e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                     a                a
Objectivos
                                   Aplica¸˜o Web
                                         ca           Correc¸˜o de bugs
                                                            ca
                                          Metricas    Adi¸˜o de funcionalidades
                                                         ca
                       Conclus˜o e trabalho futuro
                              a

Relat´rio de resultados
     o




       Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
          e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                     a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca
                                             Metricas
                          Conclus˜o e trabalho futuro
                                 a

Index


  1   Objectivos


  2   Aplica¸˜o Web
            ca
        Correc¸˜o de bugs
               ca
        Adi¸˜o de funcionalidades
            ca


  3   Metricas


  4   Conclus˜o e trabalho futuro
             a




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                   Aplica¸˜o Web
                                         ca
                                          Metricas
                       Conclus˜o e trabalho futuro
                              a

Metricas Implementadas


      Grafo de includes do sistema e de cada ficheiro
      Nr linhas de coment´rios (que n˜o s˜o peda¸os de c´digo
                         a           a a        c       o
      comentados)
      Densidade de coment´rios
                         a
      Index de Mccabe
      NLOC (nr de linhas do pretty print)
      Nr de linhas fisicas
      Clones por bloco
      Assinaturas de fun¸˜es e nomes de fun¸˜es
                        co                 co



       Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
          e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                     a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca
                                             Metricas
                          Conclus˜o e trabalho futuro
                                 a

Metrics Datatypes




   type Metrics = M . Map MetricName MetricValue
   type MetricName = ( String , Maybe FileSrc , Maybe FunctionName )
   data MetricValue =
       | Num Double
       | Clone ( M . Map FileDst [( Ocurrency , LineSrc , LineDst ) ])
       | Includes ([ SystemIncludes ] ,[ Includes ])
       | FunSig [ FunSignature ]
       | Graphviz DotFile
       | G ra phvizProject DotFile




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca
                                             Metricas
                          Conclus˜o e trabalho futuro
                                 a

Metrics API



   ( >. >) :: Metrics -> ( MetricName , MetricValue ) -> Metrics
   m >. > ( mn , mv ) =
         case M . lookup mn m of
             Nothing       -> m ’
             ( Just mv ’) -> if mv ’ == mv then m else m ’
         where m ’ = M . insert mn mv m



   Caso de uso
   emptyMetrics >◦ ((”mccbaIndex”, Nothing , Nothing ), Num 10)
                  >




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca
                                             Metricas
                          Conclus˜o e trabalho futuro
                                 a

Metrics API



   ( >+ >) :: Metrics -> Metrics -> Metrics
   m1 >+ > m2 = M . union m1 m2



   Caso de uso
   concatMetrics :: [ Metrics ] -> Metrics
   concatMetrics = foldl ( >+ >) emptyMetrics




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca
                                             Metricas
                          Conclus˜o e trabalho futuro
                                 a

Metrics API


   foldrM :: ( MetricName -> MetricValue -> c -> c ) -> c -> Metrics -> c
   foldrM f s = M . foldrWithKey f s



   Caso de uso
   ...
   foldrM step noop m
       where step k v r = "  begin { dot2tex }[] "
                      >> ( fromString $ fromGraphvizP v )
                      >> "  end { dot2tex } "
                   // r
             fromGraphvizP ( GraphvizProject l ) = l




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca
                                             Metricas
                          Conclus˜o e trabalho futuro
                                 a

Metrics API


   getM etricsFrom   :: ( a -> IO Metrics ) -> [ a ] -> IO Metrics
   getM etricsFrom   f l =
        forkMapM f   l > >=
            return   . concatMetrics . map ( either ( const emptyMetrics ) id )



   Caso de uso
   g et Li st O fCFiles :: FilePath -> IO [ FilePath ]
   g et Tr ee F romFile :: FilePath -> [ FilePath ] -> IO [( FilePath , CTranslUnit ) ]
   mccabePerFun :: ( FilePath , CTranslUnit ) -> IO Metrics

   g et Li st O fCFiles fp > >= getTreeFromFile fp > >= getMetricsFrom mccabePerFun




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                    Aplica¸˜o Web
                                          ca
                                           Metricas
                        Conclus˜o e trabalho futuro
                               a

Implementa¸˜o
          ca


  mccabeIndex :: Data a = > a -> IO Int
  mccabeIndex = applyTU ( full_tdTU typesOfInstr )

  typesOfInstr = constTU 0
    ‘ adhocTU ‘ loop
    ‘ adhocTU ‘ binaryOp
  loop :: CStat -> IO Int
  loop = return . loop_
    where loop_ ( CIf _ _ _ _ )     = 1
           loop_ ( CSwitch _ _ _ ) = 1
           loop_ ( CWhile _ _ _ _ ) = 1
           loop_ ( CFor _ _ _ _ _ ) = 1
           loop_ _                  = 0
           binaryOp :: CBinaryOp -> IO Int
           binaryOp = return . binaryOp_
              where binaryOp_ CLndOp = 1
                     binaryOp_ CLorOp = 1
                     binaryOp_ _      = 0




        Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
           e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                      a                a
Objectivos
                                     Aplica¸˜o Web
                                           ca
                                            Metricas
                         Conclus˜o e trabalho futuro
                                a

Implementa¸˜o
          ca




  ncloc :: ( FilePath , CTranslUnit ) -> IO Metrics
  ncloc ( file , tree ) =
    let len = ( length . filter ( not . null ) . lines . show . pretty ) tree
    in return $ emptyMetrics
          >. > (( " ncloc " , Just file , Nothing ) , Num $ fromIntegral len )




         Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
            e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                       a                a
Objectivos
                                      Aplica¸˜o Web
                                            ca
                                             Metricas
                          Conclus˜o e trabalho futuro
                                 a

Index


  1   Objectivos


  2   Aplica¸˜o Web
            ca
        Correc¸˜o de bugs
               ca
        Adi¸˜o de funcionalidades
            ca


  3   Metricas


  4   Conclus˜o e trabalho futuro
             a




          Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
             e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                        a                a
Objectivos
                                   Aplica¸˜o Web
                                         ca
                                          Metricas
                       Conclus˜o e trabalho futuro
                              a

Conclus˜o e trabalho futuro
       a


      Todas as metricas pretendidas foram implementadas
      Foi desenvolvida uma api para o sistema de extrac¸˜o de
                                                       ca
      metricas
      Sistema preparado para extrac¸˜o de qualidade de um
                                   ca
      programa atrav´s das metricas calculadas
                    e
      Ambas as interfaces de comunica¸˜o com a aplica¸˜o (Web e
                                     ca              ca
      linha de comandos) ficaram terminadas
      S˜o gerados relat´rios sobre os resultados de cada utilizador
       a               o
      nos concursos, e sobre as m´tricas
                                  e



       Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
          e                                           SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                     a                a
Objectivos
                                   Aplica¸˜o Web
                                         ca
                                          Metricas
                       Conclus˜o e trabalho futuro
                              a

Perguntas




                                                      ?




       Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
          e                                               SOPAS - Submiss˜o Online Para An´lise de Software (fase 4)
                                                                         a                a

Contenu connexe

Similaire à Static Code Analyzer - Part IV

GT-Digital Preservation - Camada de Interface
GT-Digital Preservation - Camada de InterfaceGT-Digital Preservation - Camada de Interface
GT-Digital Preservation - Camada de InterfaceRoberto Beraldo Chaiben
 
Desafios da Microsoft no desenvolvimento Ágil de serviços - Regional scrum g...
Desafios da Microsoft no desenvolvimento Ágil de serviços -  Regional scrum g...Desafios da Microsoft no desenvolvimento Ágil de serviços -  Regional scrum g...
Desafios da Microsoft no desenvolvimento Ágil de serviços - Regional scrum g...Ramon Durães
 
Engenharia de software apostila analise de requisitos i
Engenharia de software   apostila analise de requisitos iEngenharia de software   apostila analise de requisitos i
Engenharia de software apostila analise de requisitos irobinhoct
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em softwareVictor Hugo
 
Projeto de pesquisa apresentação
Projeto de pesquisa   apresentaçãoProjeto de pesquisa   apresentação
Projeto de pesquisa apresentaçãoEduardo Rodriguez
 
Monitorando aplicações usando Application Insights
Monitorando aplicações usando Application InsightsMonitorando aplicações usando Application Insights
Monitorando aplicações usando Application InsightsIgor Abade
 
GT-Digital Preservation - Camada de Aplicacao
GT-Digital Preservation - Camada de AplicacaoGT-Digital Preservation - Camada de Aplicacao
GT-Digital Preservation - Camada de AplicacaoRoberto Beraldo Chaiben
 
Metodologia sugerida para gestão de projetos web
Metodologia sugerida para gestão de projetos webMetodologia sugerida para gestão de projetos web
Metodologia sugerida para gestão de projetos webdiogo_plta
 
Plan de negocios sobre la distribucion
Plan de negocios sobre la distribucionPlan de negocios sobre la distribucion
Plan de negocios sobre la distribucionGuillermo Gallardo
 
Palestra Gustavo Casarotto
Palestra Gustavo CasarottoPalestra Gustavo Casarotto
Palestra Gustavo Casarottoesocialmetadados
 
Medida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de FunçãoMedida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de FunçãoÁlvaro Farias Pinheiro
 
Application Insights - Agosto/2016
Application Insights - Agosto/2016Application Insights - Agosto/2016
Application Insights - Agosto/2016Renato Groff
 
Application Insights - MS Weekend 2016
Application Insights - MS Weekend 2016Application Insights - MS Weekend 2016
Application Insights - MS Weekend 2016Renato Groff
 
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de FacebookTDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebooktdc-globalcode
 

Similaire à Static Code Analyzer - Part IV (20)

GT-Digital Preservation - Camada de Interface
GT-Digital Preservation - Camada de InterfaceGT-Digital Preservation - Camada de Interface
GT-Digital Preservation - Camada de Interface
 
Desafios da Microsoft no desenvolvimento Ágil de serviços - Regional scrum g...
Desafios da Microsoft no desenvolvimento Ágil de serviços -  Regional scrum g...Desafios da Microsoft no desenvolvimento Ágil de serviços -  Regional scrum g...
Desafios da Microsoft no desenvolvimento Ágil de serviços - Regional scrum g...
 
Spin72
Spin72Spin72
Spin72
 
Spin72
Spin72Spin72
Spin72
 
Engenharia de software apostila analise de requisitos i
Engenharia de software   apostila analise de requisitos iEngenharia de software   apostila analise de requisitos i
Engenharia de software apostila analise de requisitos i
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em software
 
Projeto de pesquisa apresentação
Projeto de pesquisa   apresentaçãoProjeto de pesquisa   apresentação
Projeto de pesquisa apresentação
 
Monitorando aplicações usando Application Insights
Monitorando aplicações usando Application InsightsMonitorando aplicações usando Application Insights
Monitorando aplicações usando Application Insights
 
GT-Digital Preservation - Camada de Aplicacao
GT-Digital Preservation - Camada de AplicacaoGT-Digital Preservation - Camada de Aplicacao
GT-Digital Preservation - Camada de Aplicacao
 
Metodologia sugerida para gestão de projetos web
Metodologia sugerida para gestão de projetos webMetodologia sugerida para gestão de projetos web
Metodologia sugerida para gestão de projetos web
 
Curriculo novo 2018
Curriculo novo 2018Curriculo novo 2018
Curriculo novo 2018
 
TRM eHealth (3 slides)
TRM eHealth (3 slides)TRM eHealth (3 slides)
TRM eHealth (3 slides)
 
Plan de negocios sobre la distribucion
Plan de negocios sobre la distribucionPlan de negocios sobre la distribucion
Plan de negocios sobre la distribucion
 
1.en.es
1.en.es1.en.es
1.en.es
 
Adas.en.es
Adas.en.esAdas.en.es
Adas.en.es
 
Palestra Gustavo Casarotto
Palestra Gustavo CasarottoPalestra Gustavo Casarotto
Palestra Gustavo Casarotto
 
Medida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de FunçãoMedida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de Função
 
Application Insights - Agosto/2016
Application Insights - Agosto/2016Application Insights - Agosto/2016
Application Insights - Agosto/2016
 
Application Insights - MS Weekend 2016
Application Insights - MS Weekend 2016Application Insights - MS Weekend 2016
Application Insights - MS Weekend 2016
 
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de FacebookTDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
 

Plus de Ulisses Costa

Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for SpaceUlisses Costa
 
Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for SpaceUlisses Costa
 
Correct sorting with Frama-C
Correct sorting with Frama-CCorrect sorting with Frama-C
Correct sorting with Frama-CUlisses Costa
 
The Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLThe Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLUlisses Costa
 
Splint the C code static checker
Splint the C code static checkerSplint the C code static checker
Splint the C code static checkerUlisses Costa
 
Exploring the Cryptol Toolset
Exploring the Cryptol ToolsetExploring the Cryptol Toolset
Exploring the Cryptol ToolsetUlisses Costa
 
Specification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolSpecification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolUlisses Costa
 
Snort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeSnort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeUlisses Costa
 
Uso de Honeypots com Honeyd
Uso de Honeypots com HoneydUso de Honeypots com Honeyd
Uso de Honeypots com HoneydUlisses Costa
 
Linux Instalation Party
Linux Instalation PartyLinux Instalation Party
Linux Instalation PartyUlisses Costa
 
Calculador Pointfree
Calculador PointfreeCalculador Pointfree
Calculador PointfreeUlisses Costa
 

Plus de Ulisses Costa (15)

Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for Space
 
Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for Space
 
Cryptol experience
Cryptol experienceCryptol experience
Cryptol experience
 
Correct sorting with Frama-C
Correct sorting with Frama-CCorrect sorting with Frama-C
Correct sorting with Frama-C
 
The Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLThe Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDL
 
Splint the C code static checker
Splint the C code static checkerSplint the C code static checker
Splint the C code static checker
 
Exploring the Cryptol Toolset
Exploring the Cryptol ToolsetExploring the Cryptol Toolset
Exploring the Cryptol Toolset
 
Specification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolSpecification of SNOW 3G in Cryptol
Specification of SNOW 3G in Cryptol
 
Snort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeSnort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da rede
 
LDAP em VDM++
LDAP em VDM++LDAP em VDM++
LDAP em VDM++
 
Uso de Honeypots com Honeyd
Uso de Honeypots com HoneydUso de Honeypots com Honeyd
Uso de Honeypots com Honeyd
 
Apresentacao JML
Apresentacao JMLApresentacao JML
Apresentacao JML
 
Linux Instalation Party
Linux Instalation PartyLinux Instalation Party
Linux Instalation Party
 
Workshop LaTeX
Workshop LaTeXWorkshop LaTeX
Workshop LaTeX
 
Calculador Pointfree
Calculador PointfreeCalculador Pointfree
Calculador Pointfree
 

Static Code Analyzer - Part IV

  • 1. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a SOPAS - Submiss˜o Online Para An´lise de a a Software (fase 4) Jos´ Pedro Silva e Pedro Faria Ulisses Costa Engenharia de Linguagens Projecto integrado June 27, 2011 Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 2. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Index 1 Objectivos 2 Aplica¸˜o Web ca Correc¸˜o de bugs ca Adi¸˜o de funcionalidades ca 3 Metricas 4 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 3. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a At´ agora: e Concretizado at´ ao ´ e ınicio da quarta fase: Termino da aplica¸˜o web e adi¸˜o de funcionalidades extra ca ca Implementa¸˜o de um script para instala¸˜o do sistema ca ca Melhoramento do interface pelo terminal Implementa¸˜o de algumas m´tricas ca e Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 4. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Motiva¸˜o e Objectivos ca Objectivos para terceira fase: Desenvolvimento de uma API para gerir as m´tricas e Terminar a implementa¸˜o das m´tricas que pretend´ ca e ıamos Melhoramento da script de instala¸˜o do sistema (dificil!) ca Permitir inser¸˜o de informa¸˜o pelo terminal ca ca Corrigir e melhorar a aplica¸˜o Web ca Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 5. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro a Index 1 Objectivos 2 Aplica¸˜o Web ca Correc¸˜o de bugs ca Adi¸˜o de funcionalidades ca 3 Metricas 4 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 6. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro a Index 1 Objectivos 2 Aplica¸˜o Web ca Correc¸˜o de bugs ca Adi¸˜o de funcionalidades ca 3 Metricas 4 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 7. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro a Correc¸˜o de bugs ca Adicionada informa¸˜o que estava em falta: ca warnings ou erros emitidos na altura da compila¸˜o j´ s˜o ca a a guardados e apresentados ao utilizador Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 8. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro a Index 1 Objectivos 2 Aplica¸˜o Web ca Correc¸˜o de bugs ca Adi¸˜o de funcionalidades ca 3 Metricas 4 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 9. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro a Adi¸˜o de funcionalidades ca Prepara¸˜o do sistema para: ca gerar relat´rio dos resultados e de m´tricas para determinado o e concurso permitir o download ou a visualiza¸˜o dentro do browser dos ca relat´rios o Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 10. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro a Gerar relat´rio de resultados o Ir ` tabela de melhores resultados e ir buscar todas as a entradas para o concurso em quest˜oa Para cada utilizador encontrar o resultado de cada enunciado Apenas contar os que estiverem 100% correctos Calcular o resultado de cada enunciado, tendo em conta o seu peso no concurso Apresentar o resultado calculado e o tempo de execu¸˜o ca Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 11. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro a Relat´rio de resultados o Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 12. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Index 1 Objectivos 2 Aplica¸˜o Web ca Correc¸˜o de bugs ca Adi¸˜o de funcionalidades ca 3 Metricas 4 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 13. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Metricas Implementadas Grafo de includes do sistema e de cada ficheiro Nr linhas de coment´rios (que n˜o s˜o peda¸os de c´digo a a a c o comentados) Densidade de coment´rios a Index de Mccabe NLOC (nr de linhas do pretty print) Nr de linhas fisicas Clones por bloco Assinaturas de fun¸˜es e nomes de fun¸˜es co co Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 14. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Metrics Datatypes type Metrics = M . Map MetricName MetricValue type MetricName = ( String , Maybe FileSrc , Maybe FunctionName ) data MetricValue = | Num Double | Clone ( M . Map FileDst [( Ocurrency , LineSrc , LineDst ) ]) | Includes ([ SystemIncludes ] ,[ Includes ]) | FunSig [ FunSignature ] | Graphviz DotFile | G ra phvizProject DotFile Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 15. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Metrics API ( >. >) :: Metrics -> ( MetricName , MetricValue ) -> Metrics m >. > ( mn , mv ) = case M . lookup mn m of Nothing -> m ’ ( Just mv ’) -> if mv ’ == mv then m else m ’ where m ’ = M . insert mn mv m Caso de uso emptyMetrics >◦ ((”mccbaIndex”, Nothing , Nothing ), Num 10) > Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 16. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Metrics API ( >+ >) :: Metrics -> Metrics -> Metrics m1 >+ > m2 = M . union m1 m2 Caso de uso concatMetrics :: [ Metrics ] -> Metrics concatMetrics = foldl ( >+ >) emptyMetrics Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 17. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Metrics API foldrM :: ( MetricName -> MetricValue -> c -> c ) -> c -> Metrics -> c foldrM f s = M . foldrWithKey f s Caso de uso ... foldrM step noop m where step k v r = " begin { dot2tex }[] " >> ( fromString $ fromGraphvizP v ) >> " end { dot2tex } " // r fromGraphvizP ( GraphvizProject l ) = l Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 18. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Metrics API getM etricsFrom :: ( a -> IO Metrics ) -> [ a ] -> IO Metrics getM etricsFrom f l = forkMapM f l > >= return . concatMetrics . map ( either ( const emptyMetrics ) id ) Caso de uso g et Li st O fCFiles :: FilePath -> IO [ FilePath ] g et Tr ee F romFile :: FilePath -> [ FilePath ] -> IO [( FilePath , CTranslUnit ) ] mccabePerFun :: ( FilePath , CTranslUnit ) -> IO Metrics g et Li st O fCFiles fp > >= getTreeFromFile fp > >= getMetricsFrom mccabePerFun Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 19. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Implementa¸˜o ca mccabeIndex :: Data a = > a -> IO Int mccabeIndex = applyTU ( full_tdTU typesOfInstr ) typesOfInstr = constTU 0 ‘ adhocTU ‘ loop ‘ adhocTU ‘ binaryOp loop :: CStat -> IO Int loop = return . loop_ where loop_ ( CIf _ _ _ _ ) = 1 loop_ ( CSwitch _ _ _ ) = 1 loop_ ( CWhile _ _ _ _ ) = 1 loop_ ( CFor _ _ _ _ _ ) = 1 loop_ _ = 0 binaryOp :: CBinaryOp -> IO Int binaryOp = return . binaryOp_ where binaryOp_ CLndOp = 1 binaryOp_ CLorOp = 1 binaryOp_ _ = 0 Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 20. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Implementa¸˜o ca ncloc :: ( FilePath , CTranslUnit ) -> IO Metrics ncloc ( file , tree ) = let len = ( length . filter ( not . null ) . lines . show . pretty ) tree in return $ emptyMetrics >. > (( " ncloc " , Just file , Nothing ) , Num $ fromIntegral len ) Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 21. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Index 1 Objectivos 2 Aplica¸˜o Web ca Correc¸˜o de bugs ca Adi¸˜o de funcionalidades ca 3 Metricas 4 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 22. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Conclus˜o e trabalho futuro a Todas as metricas pretendidas foram implementadas Foi desenvolvida uma api para o sistema de extrac¸˜o de ca metricas Sistema preparado para extrac¸˜o de qualidade de um ca programa atrav´s das metricas calculadas e Ambas as interfaces de comunica¸˜o com a aplica¸˜o (Web e ca ca linha de comandos) ficaram terminadas S˜o gerados relat´rios sobre os resultados de cada utilizador a o nos concursos, e sobre as m´tricas e Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  • 23. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro a Perguntas ? Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a