Repositori ini berisi (akan berisi) beberapa contoh sederhana analisis program statis di Java menggunakan jelaga.
Siapa pun yang tahu pemrograman Java dan ingin melakukan beberapa analisis statis dalam praktiknya tetapi tidak tahu apa -apa tentang analisis jelaga dan statis dalam teori.
Jika Anda memiliki pengetahuan sebelumnya tentang analisis program statis, saya sarankan Anda belajar jelaga dari sini.
Singkatnya, gunakan java 8 dan run ./gradlew build . Untuk informasi lebih lanjut dan pengaturan Docker, ikuti tautan ini.
Dalam bab ini, Anda akan mengunjungi contoh kode yang sangat sederhana untuk terbiasa dengan struktur data esensial jelaga dan Jimple , representasi perantara prinsip jelaga.
./gradlew run --args="HelloSoot" : Representasi Jimple dari metode printfizzbuzz di samping pernyataan cabang../gradlew run --args="HelloSoot draw" : Visualisasi grafik flow-flow printfizzbuzz.| Judul | Tutorial | Kode jelaga | Input contoh |
|---|---|---|---|
| Halo jelaga | Dokter | Hellosoot.java | Fizzbuzz.java |

Dalam bab ini, Anda terbiasa dengan beberapa metode dasar namun berguna dalam jelaga untuk membantu membaca, menganalisis, dan bahkan memperbarui kode Java.
./gradlew run --args="BasicAPI" : Analisis Lingkaran Kelas../gradlew run --args="BasicAPI draw" : Analisis Lingkaran Kelas dan menggambar grafik panggilan.| Judul | Tutorial | Kode jelaga | Input contoh |
|---|---|---|---|
| API Dasar | Dokter | BASICAPI.java | Lingkaran |

Dalam bab ini, Anda belajar cara memasukkan kode ke dalam aplikasi Android (tanpa memiliki kode sumbernya) menggunakan jelaga. Untuk menjalankan kode, Anda memerlukan Android SDK (periksa tautan ini).
./gradlew run --args="AndroidLogger" : Masukkan panggilan metode logging di awal metode APK dari kalkulator NUMIX../gradlew run --args="AndroidClassInjector" : Buat kelas baru dari awal dan suntikkannya ke kalkulator NUMIX. APK instrumen terletak di demo/Android/Instrumented . Anda harus menandatanganinya untuk menginstal pada perangkat Android:
cd ./demo/Android
# on Windows, replace 'sign.sh' by 'sign.ps1'
./sign.sh Instrumented/calc.apk key " android "
adb install -r -t Instrumented/calc.apk Untuk melihat log, jalankan adb logcat | grep -e "<SOOT_TUTORIAL>"
| Judul | Tutorial | Kode jelaga | Contoh apk |
|---|---|---|---|
| Metode log panggilan di APK | Dokter | Androidlogger.java | Kalkulator NUMIX (dari F-Droid) |
| Membuat dan menyuntikkan kelas ke dalam apk | Dokter | Androidclassinjector.java | Kalkulator NUMIX (dari F-Droid) |

Bab ini memberi Anda gambaran singkat o grafik panggilan dan analisis pointSto di Android dan Anda belajar cara membuat grafik panggilan menggunakan flowdroid. Kode sumber kode contoh ada di sini. Untuk menjalankan kode, Anda memerlukan Android SDK (periksa tautan ini).
./gradlew run --args="AndroidCallGraph <CG_Algorithm> (draw)" : Buat grafik panggilan aplikasi demo soottutorial menggunakan algoritma <CG_Algorithm> dan informasi cetak seperti metode yang dapat dijangkau atau jumlah tepi.<CG_Algorithm> bisa menjadi SPARK atau CHAdraw adalah opsional, jika diberikan visualisasi grafik panggilan akan ditampilkan../gradlew run --args="AndroidCallGraph SPARK draw" memvisualisasikan grafik panggilan yang dihasilkan oleh algoritma Spark../gradlew run --args="AndroidPTA" : Lakukan analisis pointsto dan alias pada aplikasi demo soottutorial menggunakan flowdroid.| Judul | Tutorial | Kode jelaga | Contoh apk |
|---|---|---|---|
| Hubungi Grafik di Android | Dokter | Androidcallgraph.java | Aplikasi Demo Soottutorial (Kode Sumber) |
| Analisis Pointsto di Android | Dokter | Androidpointstoanalysis.java | Aplikasi Demo Soottutorial (Kode Sumber) |

./gradlew run --args="UsageFinder 'void println(java.lang.String)' 'java.io.PrintStream" : temukan penggunaan metode dengan subsignature yang diberikan dalam semua metode usageExample.java../gradlew run --args="UsageFinder 'void println(java.lang.String)' 'java.io.PrintStream" : temukan penggunaan metode dengan subsignature yang diberikan dari tanda tangan kelas yang diberikan dalam semua metode usageExample.java.| Judul | Tutorial | Kode jelaga | Input contoh |
|---|---|---|---|
| Temukan Penggunaan Suatu Metode | Usagefinder.java | UsageExample.java | |
| Analisis Pointer Null | Nullpointeranalisis | Nullpointerexample.java |
| Judul | Tutorial | Kode jelaga | Input contoh |
|---|---|---|---|