Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Static Code Analyzer - Part IV

606 views

Published on

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

Static Code Analyzer - Part IV

  1. 1. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aSOPAS - 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, 2011Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a
  2. 2. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aIndex 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. 3. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aAt´ 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. 4. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aMotiva¸˜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. 5. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro aIndex 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. 6. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro aIndex 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. 7. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro aCorrec¸˜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. 8. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro aIndex 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. 9. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro aAdi¸˜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. 10. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro aGerar 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. 11. Objectivos Aplica¸˜o Web ca Correc¸˜o de bugs ca Metricas Adi¸˜o de funcionalidades ca Conclus˜o e trabalho futuro aRelat´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. 12. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aIndex 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. 13. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aMetricas 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. 14. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aMetrics 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. 15. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aMetrics 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. 16. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aMetrics 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. 17. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aMetrics 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. 18. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aMetrics 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. 19. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aImplementa¸˜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. 20. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aImplementa¸˜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. 21. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aIndex 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. 22. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aConclus˜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. 23. Objectivos Aplica¸˜o Web ca Metricas Conclus˜o e trabalho futuro aPerguntas ? Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 4) a a

×