本仓库的使命已完成,请移步官方Tai-e教程:
仓库:https://github.com/pascal-lab/Tai-e-assignments
官方网站:http://tai-e.pascal-lab.net
知乎帖子:https://zhuanlan.zhihu.com/p/488957195
本仓库是早期作业的参考实现...
Bem -vindo para adicionar o grupo de desenvolvimento de ferramentas de análise de programa (o código QR expira, consulte a edição nº 4)
https://canliture.github.io/imgs/group.jpg
Esta é a implementação não oficial da lição de casa experimental do curso de análise de software da Universidade de Nanjing
Nota: O bambu não é de código aberto para cursos na Universidade de Nanjing, então por que ele tem esse armazém?
- Eu dei o curso em PDF para o meu dever de casa, e a API também foi dada; De acordo com a API, eu poderia basicamente fazê -lo com base no meu próprio entendimento.
Status atual
- Ainda não foram submetidos a muitos testes (pelo menos os exemplos na palestra estão ok)
- A quinta tarefa é apenas um curto período de tempo para preencher os espaços em branco do último Código de OBJ/Tipo
- Espero aumentar bug/emissão
最近挺忙的,先停更1/2个月吧.相信这份代码仍然能够给人一些帮助.(2021-11-08)
ambiente
- Java 8
- Fuligem 4.2.1
- Intellij Idea
- Teste de construção do Maven/Junit
documento
- Docs/Org é o tópico original do Nanyang University Course.
- documentos/fuligem é material de referência de fuligem
- src/main/java/com/canliture/soot/os trabalhos em cada subdiretório têm um readme como uma descrição simples do trabalho
Código
- com.CanLiture.soot.ass1
- Implementação de código para o primeiro trabalho
- Propagação constante
- com.CanLiture.soot.ass2
- Implementação de código para o segundo trabalho
- Propagação constante + detecção de atividade aplicada à eliminação do código morto
- com.CanLiture.soot.ass3
- Implementação de código para o terceiro trabalho
- CHA é usado para construir gráficos de chamada
- com.CanLiture.soot.ass4
- Implementação de código do quarto trabalho
- Análise de ponteiro insensível ao fluxo
- com.CanLiture.soot.ass5
- Implementação de código do quinto trabalho
- Análise de ponteiro sensível ao fluxo
teste
Código para executar testes de unidade: src/test/java/diretório
- com.canliture.soot.ass {n}
Código testado: src/test/testcodes/ass/*
Debugando e correndo
Ao usar a idéia Intellij, marque o diretório src/test/testcodes/bunda como Test sources root
- Isso compilará automaticamente o código testado para o diretório de destino/classe de teste durante a depuração/corrida, facilitando o teste
Faça o teste de depuração/corrida da ASS1 como exemplo
- Encontre a classe com.CanLiture.soot.ass1.intraconStantPropagationTest e execute o teste Junit
- Cada classe de teste possui um método getTransformer (), e o método internaltransform do transformador retornado é a entrada da análise.
Como executar o teste inteiro, você pode verificar as classes interbasetest e intabaseTest, aqui encapsular uma pequena estrutura de teste
- @Antes de configurar a fuligem antes de testar
- @Test Execute Test Code
- @After Output Jimple Ir to SootOutput Directory
