本仓库的使命已完成,请移步官方Tai-e教程:
仓库:https://github.com/pascal-lab/Tai-e-assignments
官方网站:http://tai-e.pascal-lab.net
知乎帖子:https://zhuanlan.zhihu.com/p/488957195
本仓库是早期作业的参考实现...
プログラム分析ツール開発グループを追加することへ
https://canliture.github.io/imgs/group.jpg
これは、南京大学のソフトウェア分析コースの実験的な宿題の非公式の実装です
注:竹は南京大学のコースワークのオープンソースではないので、なぜこの倉庫があるのですか?
- 宿題のためにPDFコースを提供し、APIも与えられました。 APIによると、私は基本的に自分の理解に基づいてそれを行うことができました。
現在のステータス
- まだ多くのテストを受けていません(少なくとも、講義の例は大丈夫です)
- 5番目の割り当ては、最後のOBJ/タイプに敏感なコードの空白を埋めるのに短い時間です
- バグ/問題を提起したいと思っています
最近挺忙的,先停更1/2个月吧.相信这份代码仍然能够给人一些帮助.(2021-11-08)
環境
- Java 8
- すす4.2.1
- Intellijのアイデア
- Maven Build/Junitテスト
書類
- Docs/orgは、Nanyang Universityコースの元のトピックです。
- ドキュメント/すすはすす基準材料です
- src/main/java/com/canliture/soo/各サブディレクトリのジョブには、ジョブの簡単な説明としてreadmeがあります
コード
- com.canliture.soot.ass1
- com.canliture.soot.ass2
- 2番目のジョブのコード実装
- 一定の伝播 +死んだコード除去に適用されるアクティビティ検出
- com.canliture.soot.ass3
- 3番目のジョブのコード実装
- CHAは、コールグラフを作成するために使用されます
- com.canliture.soot.ass4
- 4番目のジョブのコード実装
- 流れに敏感なポインター解析
- com.canliture.soot.ass5
- 5番目のジョブのコード実装
- 流れに敏感なポインター解析
テスト
ユニットテストを実行するコード:SRC/TEST/JAVA/ディレクトリ
- com.canliture.soot.ass {n}
テストコード:SRC/TEST/TESTCODES/ASS/*
デバッグとランニング
Intellijのアイデアを使用する場合、ディレクトリSRC/テスト/テストコード/ASS Test sources rootとしてマークします
- これにより、デバッグ/実行中にテスト済みコードがターゲット/テストクラスディレクトリに自動的にコンパイルされ、テストが容易になります
ASS1のデバッグ/ランニングテストを例として取ります
- com.canliture.soot.ass1.intraconstantpropagationtestクラスを見つけて、Junitテストを実行します
- 各テストクラスにはgetTransformer()メソッドがあり、返された変圧器の内部変換方法は分析の入り口です。
テスト全体を実行する方法は、BasetestとbaseTestestestのクラスを確認できます。ここでは、小さなテストフレームワークをカプセル化します
- @前にテスト前にすすを構成します
- @Test実行テストコードを実行します
- @after出力Jimple IRからSootutputディレクトリへ
