LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework
Autor(a) principal: | |
---|---|
Data de Publicação: | 2021 |
Tipo de documento: | Trabalho de conclusão de curso |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Monografias da UnB |
Texto Completo: | https://bdm.unb.br/handle/10483/28953 |
Resumo: | Trabalho de conclusão de curso (graduação)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2021. |
id |
UNB-2_c265502a46e2f46aa4193be329950cd1 |
---|---|
oai_identifier_str |
oai:bdm.unb.br:10483/28953 |
network_acronym_str |
UNB-2 |
network_name_str |
Biblioteca Digital de Monografias da UnB |
repository_id_str |
11571 |
spelling |
Fantin, Luisa SinzkerAlmeida, Rodrigo Bonifácio deFANTIN, Luisa Sinzker. LambdaTransformer: uma solução para o tratamento de Expressões Lambda no JimpleFramework. 2021. 79 f. Trabalho de conclusão de curso (Bacharelado em Engenharia da Computação)—Universidade de Brasília, Brasília, 2021.https://bdm.unb.br/handle/10483/28953Trabalho de conclusão de curso (graduação)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2021.Análise de fluxo de dados é um tipo de análise estática que permite a coleta de informações sobre o comportamento dos dados de um programa em tempo de execução sem que esse código seja executado. Isso é feito com o uso de ferramentas como Grafos de Controle de Fluxo, CFG, uma representação de programa que facilita a visualização do comportamento do código e o desenvolvimento de análises. Códigos Java possuem bytecode baseado em pilha o que torna a criação de CFGs mais difícil. Frameworks como o Soot utilizam Representações Intermediárias, RIs, com estruturas mais amigáveis a criação do CFGs e escrita de análises para analisar códi- gos Java. O Jimple Framework implementa sua própria versão de Jimple, a principal RI de Soot, utilizando a linguagem de meta-programação Rascal com o intuito de tornar a escrita de análises menos verbosas em comparação ao Soot. A descompilação de bytecode Java da origem a código Jimple que pode passar por refinamentos com o intuito de tornar o código mais legível ou simplificar a realização de alguma análise. A partir de Java 8, expressões lambda foram introduzidas a linguagem, essas expressões são traduzidas em bytecodecomo instruções invoke- dynamic. Como todas as instruções presentes no bytecode Java, o Jimple Framework deve oferecer ferramentas que permitam a realização de análises estáticas, como análise de fluxo de dados, em códigos que possuam instruções esse tipo, porém esse tipo de instrução faz uso de ferramentas dentro da JVM que escondem o caminho dos dados, dessa forma impossibilitando a análise de fluxo e criação do CFG. O Jimple Framework deve refinar código Jimple para per- mitir análises de códigos com esse tipo de instruções. Este trabalho descreve o processo de desenvolvimento do LambdaTransformer um módulo do Jimple Framework capaz de transfor- mar instruções invokedynamic em invokestatic com o uso de funções de travessia de árvore e casamento de padrões.Submitted by Diego Araújo Campos (diegoa@bce.unb.br) on 2021-10-19T01:13:24Z No. of bitstreams: 1 2021_LuisaSinzkerFantin_tcc.pdf: 618297 bytes, checksum: d5d7986b171dc76cdfdeaaa875fec24b (MD5)Approved for entry into archive by Diego Araújo Campos (diegoa@bce.unb.br) on 2021-10-19T01:14:14Z (GMT) No. of bitstreams: 1 2021_LuisaSinzkerFantin_tcc.pdf: 618297 bytes, checksum: d5d7986b171dc76cdfdeaaa875fec24b (MD5)Made available in DSpace on 2021-10-19T01:14:15Z (GMT). No. of bitstreams: 1 2021_LuisaSinzkerFantin_tcc.pdf: 618297 bytes, checksum: d5d7986b171dc76cdfdeaaa875fec24b (MD5)Dataflow analysis is a type of static analysis that allows gathering information about the behav- ior of a program’s data at runtime without executing the code. This is done using tools such as Control Flow Graphs, CFG, a program representation that facilitates the visualization of code behavior and the development of analysis. Java code has stack-based bytecode which makes CFG creation more difficult, sometimes impossible. Frameworks like Soot use Intermediate Representations, IRs, with more user-friendly structures for creating CFGs and writing analyzes to analyze Java code. Jimple Framework implements its own version of Jimple, Soot’s main IR, using the Rascal meta-programming language in order to make writing analysis less verbose compared to Soot. The decompilation of Java bytecode creates a Jimple code that can undergo refinements in order to make the code more readable or simplify performing some analysis. As of Java 8, lambda expressions were introduced to the language, these expressions are translated into bytecode as invokedynamic instructions. Like all instructions present in Java bytecode, Jim- ple Framework must offer tools that allow static analysis, such as data flow analysis, in codes that have instructions of this type, but this type of instruction makes use of tools within the JVM that hide the data flow, thus making flow analysis and CFG creation impossible. The Jim- ple Frameworkmust refine the Jimple code to allow code parsing with this type of instructions. This work describes the process of developing LambdaTransformer, a Jimple Framework mod- ule capable of transforming invokedynamic instructions into invokestatic instructions using tree traversal and pattern matching functions.A concessão da licença deste item refere-se ao termo de autorização impresso assinado pelo autor que autoriza a Biblioteca Digital da Produção Intelectual Discente da Universidade de Brasília (BDM) a disponibilizar o trabalho de conclusão de curso por meio do sítio bdm.unb.br, com as seguintes condições: disponível sob Licença Creative Commons 4.0 International, que permite copiar, distribuir e transmitir o trabalho, desde que seja citado o autor e licenciante. Não permite o uso para fins comerciais nem a adaptação desta.info:eu-repo/semantics/openAccessJava (Linguagem de programação de computador)Expressões lambdaLambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFrameworkinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesis2021-10-19T01:14:15Z2021-10-19T01:14:15Z2021-06-09porreponame:Biblioteca Digital de Monografias da UnBinstname:Universidade de Brasília (UnB)instacron:UNBLICENSElicense.txtlicense.txttext/plain1817http://bdm.unb.br/xmlui/bitstream/10483/28953/2/license.txt21554873e56ad8ddc69c092699b98f95MD52ORIGINAL2021_LuisaSinzkerFantin_tcc.pdf2021_LuisaSinzkerFantin_tcc.pdfapplication/pdf618297http://bdm.unb.br/xmlui/bitstream/10483/28953/1/2021_LuisaSinzkerFantin_tcc.pdfd5d7986b171dc76cdfdeaaa875fec24bMD5110483/289532021-10-18 22:14:15.023oai:bdm.unb.br:10483/28953w4kgbmVjZXNzw6FyaW8gY29uY29yZGFyIGNvbSBhIGxpY2Vuw6dhIGRlIGRpc3RyaWJ1acOnw6NvIG7Do28tZXhjbHVzaXZhLAphbnRlcyBxdWUgbyBkb2N1bWVudG8gcG9zc2EgYXBhcmVjZXIgbmEgQmlibGlvdGVjYSBEaWdpdGFsIGRhIFByb2R1w6fDo28gCkRpc2NlbnRlIGRhIFVuaXZlcnNpZGFkZSBkZSBCcmFzw61saWEuIFBvciBmYXZvciwgbGVpYSBhCmxpY2Vuw6dhIGF0ZW50YW1lbnRlLiBDYXNvIG5lY2Vzc2l0ZSBkZSBhbGd1bSBlc2NsYXJlY2ltZW50byBlbnRyZSBlbQpjb250YXRvIGF0cmF2w6lzIGRlOiBiZG1AYmNlLnVuYi5iciBvdSAzMTA3LTI2ODcuCgpMSUNFTsOHQSBERSBESVNUUklCVUnDh8ODTyBOw4NPLUVYQ0xVU0lWQQoKQW8gYXNzaW5hciBlIGVudHJlZ2FyIGVzdGEgbGljZW7Dp2EsIG8vYSBTci4vU3JhLiAoYXV0b3Igb3UgZGV0ZW50b3IgZG9zCmRpcmVpdG9zIGRlIGF1dG9yKToKCmEpIENvbmNlZGUgw6AgVW5pdmVyc2lkYWRlIGRlIEJyYXPDrWxpYSBvIGRpcmVpdG8gbsOjby1leGNsdXNpdm8gZGUKcmVwcm9kdXppciwgY29udmVydGVyIChjb21vIGRlZmluaWRvIGFiYWl4byksIGNvbXVuaWNhciBlL291CmRpc3RyaWJ1aXIgbyBkb2N1bWVudG8gZW50cmVndWUgKGluY2x1aW5kbyBvIHJlc3Vtby9hYnN0cmFjdCkgZW0KZm9ybWF0byBkaWdpdGFsIG91IGltcHJlc3NvIGUgZW0gcXVhbHF1ZXIgbWVpby4KCmIpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUKZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYQp0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50byBsaGUgw6kKcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UgZW50aWRhZGUuCgpjKSBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSBjb250w6ltIG1hdGVyaWFsIGRvIHF1YWwgbsOjbyBkZXTDqW0gb3MKZGlyZWl0b3MgZGUgYXV0b3IsIGRlY2xhcmEgcXVlIG9idGV2ZSBhdXRvcml6YcOnw6NvIGRvIGRldGVudG9yIGRvcwpkaXJlaXRvcyBkZSBhdXRvciBwYXJhIGNvbmNlZGVyIMOgIFVuaXZlcnNpZGFkZSBkZSBCcmFzw61saWEgb3MgZGlyZWl0b3MKcmVxdWVyaWRvcyBwb3IgZXN0YSBsaWNlbsOnYSwgZSBxdWUgZXNzZSBtYXRlcmlhbCBjdWpvcyBkaXJlaXRvcyBzw6NvIGRlCnRlcmNlaXJvcyBlc3TDoSBjbGFyYW1lbnRlIGlkZW50aWZpY2FkbyBlIHJlY29uaGVjaWRvIG5vIHRleHRvIG91CmNvbnRlw7pkbyBkbyBkb2N1bWVudG8gZW50cmVndWUuCgpTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSDDqSBiYXNlYWRvIGVtIHRyYWJhbGhvIGZpbmFuY2lhZG8gb3UgYXBvaWFkbwpwb3Igb3V0cmEgaW5zdGl0dWnDp8OjbyBxdWUgbsOjbyBhIFVuaXZlcnNpZGFkZSBkZSBCcmFzw61saWEsIGRlY2xhcmEgcXVlCmN1bXByaXUgcXVhaXNxdWVyIG9icmlnYcOnw7VlcyBleGlnaWRhcyBwZWxvIHJlc3BlY3Rpdm8gY29udHJhdG8gb3UKYWNvcmRvLgoKQSBVbml2ZXJzaWRhZGUgZGUgQnJhc8OtbGlhIGlkZW50aWZpY2Fyw6EgY2xhcmFtZW50ZSBvKHMpIHNldSAocykgbm9tZSAocykKY29tbyBvIChzKSBhdXRvciAoZXMpIG91IGRldGVudG9yIChlcykgZG9zIGRpcmVpdG9zIGRvIGRvY3VtZW50bwplbnRyZWd1ZSwgZSBuw6NvIGZhcsOhIHF1YWxxdWVyIGFsdGVyYcOnw6NvLCBwYXJhIGFsw6ltIGRhcyBwZXJtaXRpZGFzIHBvcgplc3RhIGxpY2Vuw6dhLgo=Biblioteca Digital de Monografiahttps://bdm.unb.br/PUBhttp://bdm.unb.br/oai/requestbdm@bce.unb.br||patricia@bce.unb.bropendoar:115712021-10-19T01:14:15Biblioteca Digital de Monografias da UnB - Universidade de Brasília (UnB)false |
dc.title.pt_BR.fl_str_mv |
LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework |
title |
LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework |
spellingShingle |
LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework Fantin, Luisa Sinzker Java (Linguagem de programação de computador) Expressões lambda |
title_short |
LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework |
title_full |
LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework |
title_fullStr |
LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework |
title_full_unstemmed |
LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework |
title_sort |
LambdaTransformer : uma solução para o tratamento de Expressões Lambda no JimpleFramework |
author |
Fantin, Luisa Sinzker |
author_facet |
Fantin, Luisa Sinzker |
author_role |
author |
dc.contributor.author.fl_str_mv |
Fantin, Luisa Sinzker |
dc.contributor.advisor1.fl_str_mv |
Almeida, Rodrigo Bonifácio de |
contributor_str_mv |
Almeida, Rodrigo Bonifácio de |
dc.subject.keyword.pt_BR.fl_str_mv |
Java (Linguagem de programação de computador) Expressões lambda |
topic |
Java (Linguagem de programação de computador) Expressões lambda |
description |
Trabalho de conclusão de curso (graduação)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2021. |
publishDate |
2021 |
dc.date.submitted.none.fl_str_mv |
2021-06-09 |
dc.date.accessioned.fl_str_mv |
2021-10-19T01:14:15Z |
dc.date.available.fl_str_mv |
2021-10-19T01:14:15Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
format |
bachelorThesis |
status_str |
publishedVersion |
dc.identifier.citation.fl_str_mv |
FANTIN, Luisa Sinzker. LambdaTransformer: uma solução para o tratamento de Expressões Lambda no JimpleFramework. 2021. 79 f. Trabalho de conclusão de curso (Bacharelado em Engenharia da Computação)—Universidade de Brasília, Brasília, 2021. |
dc.identifier.uri.fl_str_mv |
https://bdm.unb.br/handle/10483/28953 |
identifier_str_mv |
FANTIN, Luisa Sinzker. LambdaTransformer: uma solução para o tratamento de Expressões Lambda no JimpleFramework. 2021. 79 f. Trabalho de conclusão de curso (Bacharelado em Engenharia da Computação)—Universidade de Brasília, Brasília, 2021. |
url |
https://bdm.unb.br/handle/10483/28953 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Monografias da UnB instname:Universidade de Brasília (UnB) instacron:UNB |
instname_str |
Universidade de Brasília (UnB) |
instacron_str |
UNB |
institution |
UNB |
reponame_str |
Biblioteca Digital de Monografias da UnB |
collection |
Biblioteca Digital de Monografias da UnB |
bitstream.url.fl_str_mv |
http://bdm.unb.br/xmlui/bitstream/10483/28953/2/license.txt http://bdm.unb.br/xmlui/bitstream/10483/28953/1/2021_LuisaSinzkerFantin_tcc.pdf |
bitstream.checksum.fl_str_mv |
21554873e56ad8ddc69c092699b98f95 d5d7986b171dc76cdfdeaaa875fec24b |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 |
repository.name.fl_str_mv |
Biblioteca Digital de Monografias da UnB - Universidade de Brasília (UnB) |
repository.mail.fl_str_mv |
bdm@bce.unb.br||patricia@bce.unb.br |
_version_ |
1801493161067937792 |