• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Static Code Analyzer - Part III
 

Static Code Analyzer - Part III

on

  • 569 views

 

Statistics

Views

Total Views
569
Views on SlideShare
569
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Static Code Analyzer - Part III Static Code Analyzer - Part III Presentation Transcript

    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasSOPAS - Submiss˜o Online Para An´lise de a a Software (fase 3) Jos´ Pedro Silva e Pedro Faria Ulisses Costa Engenharia de Linguagens Projecto integrado May 2, 2011Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasIndex 1 Objectivos 2 Aplica¸˜o Web ca 3 Terminal Interface 4 Instala¸˜o do sistema ca 5 Strafunski 6 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasAt´ agora: e Concretizado at´ ao ´ e ınicio da terceira fase: Estudo do language.C Estudo das m´tricas e Matura¸˜o da WebApp ca Inicio da implementa¸˜o do acesso pelo Terminal ca Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasMotiva¸˜o e Objectivos ca Objectivos para terceira fase: Terminar a aplica¸˜o web esteticamente e adicionar ca funcionalidades extra In´ da implementa¸˜o de uma script de instala¸˜o do ıcio ca ca sistema Implementa¸˜o de algumas m´tricas ca e Melhoramento no interface pelo Terminal Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasIndex 1 Objectivos 2 Aplica¸˜o Web ca 3 Terminal Interface 4 Instala¸˜o do sistema ca 5 Strafunski 6 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasEstado da aplica¸˜o Web ca A aplica¸˜o est´ praticamente terminada, o que se pretende fazer ca a daqui para a frente ser´ melhorar o que est´ feito e adicionar a a alguns extras. O que estava implementado at´ ` entrega da fase ea anterior: Cria¸˜o de contas de utilizador (grupo) ca Associa¸˜o de concorrentes a determinado grupo ca Cria¸˜o de concursos ca Cria¸˜o de enunciados (atrav´s da interface web ou ca e submetendo em formato xml) Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasEstado da aplica¸˜o Web (parte 2) ca Inser¸˜o de baterias de teste para os enunciados ca Submiss˜o de programas para avalia¸˜o a ca Adi¸˜o simplificada de novas fun¸˜es de avalia¸˜o ou de novas ca co ca linguagens de programa¸˜o ao sistema ca Apresenta¸˜o de resultados referentes `s diversas tentativas ca a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasNovidades Limaram-se alguns aspectos na interface, a n´ de ıvel acessibilidade Alterou-se o script de detec¸˜o de clones, escrito em perl, de ca forma a interagir melhor com a aplica¸˜o ca Adicionou-se ` aplica¸˜o a funcionalidade de detec¸˜o de a ca ca clones Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasModo de utiliza¸˜o do script de detec¸˜o de clones ca ca(CloneDt.pl) Modo de utiliza¸˜o ca perl cloneDt.pl -file [path1] -comp [path2] em que [path1] representa o path do ficheiro que se acabou de submeter, e o path2 representa o path do ficheiro com o qual se pretende comparar o primeiro Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasDetalhes do script de detec¸˜o de clones (CloneDt.pl) ca utiliza o comando Comando ctags ctags -x [path] de forma a obter as linhas referentes ao in´ de cada fun¸˜o ıcio ca lˆ o ficheiro e guarda o c´digo de cada fun¸˜o, numa posi¸˜o e o ca ca de array diferente remove espa¸os em branco e coment´rios c a substitu´ strings por ’S’, n´meros por ’1’ e vari´veis por ’var’ ı u a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasDetalhes do script de detec¸˜o de clones (CloneDt.pl) ca repete o mesmo processo para o segundo ficheiro compara cada elemento do primeiro array gerado com os elementos do segundo array regista cada vez que encontra uma fun¸˜o que pode ser c´pia ca o de outra no fim imprime para o stdout a percentagem de fun¸˜es que co foram assinaladas como clones Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasDetec¸˜o de clones na aplica¸˜o ca ca cada vez que um utilizador submete uma proposta de resolu¸˜o, o seu c´digo ´ comparado com o c´digo das ca o e o tentativas mais recentes dos restantes grupos, para o mesmo enunciado quando encontra poss´ ıveis clones, adiciona uma entrada na base de dados Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasIndex 1 Objectivos 2 Aplica¸˜o Web ca 3 Terminal Interface 4 Instala¸˜o do sistema ca 5 Strafunski 6 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasMelhoramentos Implementa¸˜o com sucesso de um sistema por comandos. ca Cria¸˜o de um m´dulo, Access.pm, de comunica¸˜o entre a ca o ca camada de dados. Usando m´dulo Moose o Aumento da ´rea de cobertura entre a interface e o sistema. a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasIndex 1 Objectivos 2 Aplica¸˜o Web ca 3 Terminal Interface 4 Instala¸˜o do sistema ca 5 Strafunski 6 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasInstala¸˜o do sistema ca Implementar uma script de instala¸˜o de todo o software ca envolvido no sistema Script em bash Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasVantagens Facilitar a manuten¸˜o sistema ca Facilidade em migrar o sistema Gerir vers˜es de software usados pelo sistema o Novas skills de administra¸˜o de sistemas ca Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasSoftware a instalar De momento, a script instala: Perl e m´dulos o Bibliotecas C Haskell e derivados Ruby, Rails e Gems Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasIn´ I - Verifica¸˜o do utilizador ıcio ca A primeira fun¸˜o invocada: ca Check user id andlogfile = " tee -a main . log " function check_user_id { echo " ‘ whoami ‘ started this script installation file at ‘ date ‘ " | $andlogfile if [ ! " ‘ whoami ‘ " = " root " ]; then echo " Not running as root . Yes , this is an installation file ... " | $andlogfile exit 1 ; fi } Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasIn´ II - Verifica¸˜o do sistema ıcio ca install package function install_package { case ‘ uname -s ‘ in " Darwin " ) install_macosx ;; " Linux " ) case ‘ uname -v ‘ in * " Ubuntu " *) install_ubuntu ;; *) echo " Your Linux is not supported yet . If it does have a packet manager please send an email to $admin_email " exit 1; ;; esac ;; *) echo " Your operative system is not supported yet . Please send an email to $admin_email " exit 1; ;; esac } Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasExemplo I - Invoca¸˜o da fun¸˜o geral ca ca install macosx function install_macosx { echo " Working on a MacOSX machine " | $andlogfile build_macosx $portins gd2 i nstall_perl_mac install_perl_modules } Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasExemplo II - Haskell e derivados Fun¸˜o build macosx trata de instalar: ca GHCi - Compilador de Haskell, juntamente com o interpretador. Happy - Gerador de parsers desenvolvido em Haskell Alex - Gerador de analisadores l´xicos desenvolvido em e Haskell Language.C - Biblioteca do Haskell para an´lise e gera¸˜o a ca de c´digo C o Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasExemplo III - Instala¸˜o ca build macosx function build_macosx { i s_ghc_installed if [ $ ? - eq 1 ]; then echo " GHC is installed , I will continue ... " i s _ g h c _ p a c k a g e _ i n s t a l l e d " happy " if [ $ ? - eq 0 ]; then echo " Happy is not installed , I will install " $portins hs - happy fi i s _ g h c _ p a c k a g e _ i n s t a l l e d " alex " if [ $ ? - eq 0 ]; then echo " Alex is not installed , I will install " $portins hs - alex fi i s _ g h c _ p a c k a g e _ i n s t a l l e d " language " if [ $ ? - eq 0 ]; then echo " Language . C is not installed , I will install " build_language_c cd Parser / language -c -0.3.2.1/ runhaskell Setup . hs install cd - fi Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasIndex 1 Objectivos 2 Aplica¸˜o Web ca 3 Terminal Interface 4 Instala¸˜o do sistema ca 5 Strafunski 6 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasStrafunski SYB (Scrap Your Boilerplate1 ) - Programa¸˜o gen´rica ca e Implementa estrat´gias no paradigma funcional e Data.Data (SYB) gfoldl :: (c (d → b) → d → c b) → (g → c g ) → a → c a gunfold :: (c(b → r ) → c r ) → (r → c r ) → Constr → c a gmapT :: (b → b) → a → a 1 http://www.cs.uu.nl/wiki/GenericProgramming/SYB Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasPorquˆ Strafunski? - Language.C exemplo e void fun(int a, int b); CTranslUnit [ CDeclExt ( CDecl [ CTypeSpec ( CVoidType ( NodeInfo ( " main . c " , 2 , 1) ( Name { nameId = 1 }) ) ) ] [ ( Just ( CDeclr ( Just " fun " ) [ CFunDeclr ( Right ([ CDecl [ CTypeSpec ( CIntType ( NodeInfo ( " main . c " ,2 ,11) ( Name { nameId = 4}) ) ) ] [( Just ( CDeclr ( Just " a " ) [] Nothing [] ( NodeInfo ( " main . c " , 2 , 15) ( Name { nameId = 5 }) ) ) , Nothing , Nothing ) ] ( NodeInfo ( " main . c " , 2 , 11) ( Name { nameId = 6 }) ) , CDecl [ CTypeSpec ( CIntType ( NodeInfo ( " main . c " , 2 , 18) ( Name { nameId = 8 }) ) ) ] [( Just ( CDeclr ( Just " b " ) [] Nothing [] ( NodeInfo ( " main . c " ,2 ,22) ( Name { nameId = 9}) ) ) , Nothing , Nothing ) ] ( NodeInfo ( " main . c " ,2 ,18) ( Name { nameId = 10}) ) ] , False ) ) [] ( NodeInfo ( " main . c " ,2 ,10) ( Name { nameId = 11}) ) ] Nothing [] ( NodeInfo ( " main . c " ,2 ,6) ( Name { nameId = 2}) ) ) , Nothing , Nothing ) ] ( NodeInfo ( " main . c " ,2 ,1) ( Name { nameId = SOPAS - ] Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e 12}) ) ) Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasPorquˆ Strafunski? - Como tratar arvores grandes (sem eSYB) Muito trabalhoso Ter uma fun¸˜o para cada tipo de dados (no caso do ca Language.C 28) Ter uma ac¸˜o para cada constructor de tipos (no caso do ca Language.C 84) R´pidamente se atinge perto de 200 linhas de c´digo para fazer a o uma travessia na ´rvore e executar uma ac¸˜o num constructor2 . a ca 2 https://github.com/ulisses/Static-Code-Analyzer/blob/ 95032a7e3eaf52e0dc6c36d3c1039519bc5fe689/Parser/Main.hs Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasPorquˆ Strafunski? - Como tratar arvores grandes (com eSYB) Pouco trabalhoso, gen´rico e Definir a ac¸˜o que se quer tomar sobre o nodo em causa ca Definir uma estrat´gia e Com pouco c´digo definimos uma estrat´gia e uma ac¸˜o sobre a o e ca ´rvore de parsing a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasStrafunski - Estrat´gias e Para a aplica¸˜o de uma estrat´gia a uma instˆncia do nosso tipo ca e a de dados t iremos usar: applyTP :: (Monad m, Term t) ⇒ TP m → t → m t applyTU :: (Monad m, Term t) ⇒ TU u m → t → m u Permite adicionar estrat´gias: e adhocTP :: (Monad m, Term t) ⇒ TP m → (t → mt) → TP m adhocTU :: (Monad m, Term t) ⇒ TUam → (t → mu) → TU u m Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasStrafunski - Estrat´gias 2 e Permite executar estrat´gias em sequˆncia: e e seqTP :: Monad m ⇒ TP m → TP m → TP m seqTU :: Monad m ⇒ TP m → TU u m → TU u m Para tentar usar estrat´gias diferentes: e choiceTP :: MonadPlus m ⇒ TP m → TP m → TP m choiceTU :: MonadPlus m ⇒ TU u m → TU u m → TU u m Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasStrafunski - Estrat´gias 3 e Aplica esta estrat´gia a todos os subtermos imediatos, para o TU e os resultados s˜o reduzidos com a fun¸˜o do monoid +: a ca allTP :: Monad m ⇒ TP m → TP m allTU :: (Monad m, Monoid u) ⇒ TU u m → TU u m Esta fun¸˜o permite aplicar a estrat´gia ao primeiro filho que ca e aparecer da esquerda para a direita: once tdTP, once buTP :: MonadPlus m ⇒ TP m → TP m once tdTU, once buTU :: MonadPlus m ⇒ TU u m → TU u m Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasTU vs TP full_tdTU :: ( Monad m , Monoid a ) = > TU a m -> TU a m full_tdTU s = op2TU mappend s ( allTU ’ ( full_tdTU s ) ) class Monoid a where mempty :: a mappend :: a -> a -> a mconcat :: [ a ] -> a -- Defined in Data . Monoid full_tdTP :: Monad m = > TP m -> TP m full_tdTP s = s ‘ seqTP ‘ ( allTP ( full_tdTP s ) ) Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasStrafunski - Exemplos Contar o n´mero de ifs, switches e ciclos (McCabeIndex−−). u testMcCabe :: IO Int testMcCabe = parse > >= mcCabeIndex . fromRight where fromRight = (( Right prog ) -> prog ) parse = parseCFile ( newGCC " gcc " ) Nothing [ " - U__BLOCKS__ " ] " main . c " instance Num a = > Monoid a where mappend = (+) mempty = 0 mcCabeIndex :: Data a = > a -> IO Int mcCabeIndex = applyTU ( full_tdTU loopCond ) loopCond = constTU 0 ‘ adhocTU ‘ ( return . action ) action :: Num a = > CStat -> a action ( CIf _ _ _ _ ) = 1 action ( CSwitch _ _ _ ) = 1 action ( CWhile _ _ _ _ ) = 1 action ( CFor _ _ _ _ _ ) = 1 action _ = 0 Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasStrafunski - Exemplos Extrair as assinaturas de todas as fun¸˜es. co g e t F u n c t i onsSign :: IO [ CTranslUnit ] g e t F u n c t i onsSign = parse > >= return . getFunSign . fromRight where fromRight = (( Right prog ) -> prog ) parse = parseCFile ( newGCC " gcc " ) Nothing [ " - U__BLOCKS__ " ] " main . c " getFunSign :: Data x = > x -> [ x ] getFunSign = applyTP ( topdown names1 ) where names1 = idTP ‘ adhocTP ‘ ( return . fr o mF un c ti o nT oS i gn ) f r o m F u n c t io nT o Si g n ( CFDefExt ( CFunDef lCDeclSpec cDeclr _ _ _ ) ) = CDeclExt ( CDecl lCDeclSpec [( Just $ cDeclr , Nothing , Nothing ) ] internalNode ) Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasIndex 1 Objectivos 2 Aplica¸˜o Web ca 3 Terminal Interface 4 Instala¸˜o do sistema ca 5 Strafunski 6 Conclus˜o e trabalho futuro a Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasConclus˜o e trabalho futuro a Implementa¸˜o das restantes m´tricas descritas no relat´rio ca e o Melhorar a utiliza¸˜o pelo terminal (permitir escrita) ca Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a
    • Objectivos Aplica¸˜o Web ca Terminal Interface Instala¸˜o do sistema ca Strafunski Conclus˜o e trabalho futuro a PerguntasPerguntas ? Jos´ Pedro Silva, Pedro Faria, Ulisses Costa e SOPAS - Submiss˜o Online Para An´lise de Software (fase 3) a a