本仓库的使命已完成,请移步官方Tai-e教程:
仓库:https://github.com/pascal-lab/Tai-e-assignments
官方网站:http://tai-e.pascal-lab.net
知乎帖子:https://zhuanlan.zhihu.com/p/488957195
本仓库是早期作业的参考实现...
Bienvenido a agregar el grupo de desarrollo de herramientas de análisis de programas (expira el código QR, consulte el tema #4)
https://canliture.github.io/imgs/group.jpg
Esta es la implementación no oficial de la tarea experimental del curso de análisis de software de la Universidad de Nanjing
Nota: El bambú no es de código abierto para los cursos en la Universidad de Nanjing, entonces, ¿por qué tiene este almacén?
- Di el curso PDF para mi tarea, y la API también fue dada; Según la API, básicamente podría hacerlo en base a mi propia comprensión.
Estado actual
- Aún no se han sometido a muchas pruebas (al menos, los ejemplos en la conferencia están bien)
- La quinta asignación es solo un corto tiempo para completar los espacios en blanco del último código OBJ/Tipo sensible
- Espero plantear errores/problemas
最近挺忙的,先停更1/2个月吧.相信这份代码仍然能够给人一些帮助.(2021-11-08)
ambiente
- Java 8
- Hoot 4.2.1
- Idea intelij
- Maven Build/Junit Test
documento
- Docs/org es el tema original del curso de la Universidad de Nanyang.
- documentos/hollín es material de referencia del hollín
- src/main/java/com/canliture/shot/los trabajos en cada subdirectorio tienen un readme como una descripción simple del trabajo
Código
- com.canliture.soot.ass1
- Implementación del código para el primer trabajo
- Propagación constante
- com.canliture.soot.ass2
- Implementación del código para el segundo trabajo
- Propagación constante + detección de actividad aplicada a la eliminación del código muerto
- com.canliture.soot.ass3
- Implementación del código para el tercer trabajo
- Cha se usa para construir gráficos de llamadas
- com.canliture.soot.ass4
- Implementación del código del cuarto trabajo
- Análisis de puntero insensible al flujo
- com.canliture.soot.ass5
- Implementación del código del quinto trabajo
- Análisis de puntero sensible al flujo
prueba
Código para ejecutar pruebas unitarias: src/test/java/directorio
- com.canliture.soot.ass {n}
Código probado: src/test/testcodes/ass/*
Depuración y ejecución
Al usar la idea IntelliJ, marque el directorio src/test/testcodes/ass como Test sources root
- Esto compilará automáticamente el código probado en el directorio de Target/Test-Classes durante la depuración/ejecución, lo que facilita la prueba
Tome la prueba de depuración/ejecución de Ass1 como ejemplo
- Encuentre la clase com.canliture.soot.ass1.intraconstantpropagationTest y ejecute la prueba de Junit
- Cada clase de prueba tiene un método getTransformer (), y el método interno de TRANSFORM del transformador devuelto es la entrada al análisis.
Cómo ejecutar toda la prueba, puede verificar las clases InterBasetest e Intrabasetest, aquí encapsula un pequeño marco de prueba
- @Borfore Configurar el hollín antes de probar
- @Test Ejecutar el código de prueba
- @After Output Jimple IR al directorio de SoToToutput
