Static Code Analyzer - Part IV

523 views
454 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
523
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×