7-
rasmda DScope $r13
o'zgaruvchisi blokToNodes
nomi bilan manba kodidagi ÿ269
qatorda aniqlanganligini aniqlaydi.
Keyingi, DScope
SoCC'18, 2018 yil 11–13 oktyabr, Karlsbad, CA, AQSh
tegishli dastur funktsiyasining barcha bayonotlarida.
ma'lumotlarning buzilishini aniqlashda, biz bir guruhdagi barcha holatlar
argumentlari buzilganda istisnolar qo'yishini taxmin qilishimiz mumkin. Aytaylik,
try bloklarida m ta
ifoda bor .
Buning sababi, $r13
HashMap turiga va HashMap
I/U sinfiga kirmaydi. Kiritish-
chiqarish bilan bog'liq murakkab o'zgaruvchilarni aniqlash uchun DScope IR
kodidagi maqsadli o'zgaruvchi uchun Java baytekodidagi to'liq turdagi
ma'lumotlarni (ya'ni, sinf yo'lini) olishi kerak. Biroq, IR kodidan Java baytekodiga
to'g'ridan-to'g'ri xaritalash mavjud emas. Shunday qilib, DScope xaritalashni
o'rnatish uchun manba kodidan foydalanishi kerak. Xususan, DScope birinchi
IR
kodidagi har bir valI
R o'zgaruvchisi uchun getLineNumber()
API orqali Soot'dan
manba kod satri raqamini oladi . Keyin DScope mos keladigan manba kodini
tahlil qiladi va valsr
c sifatida belgilangan manba kodidagi valI R nomini chiqaradi .
DScope chiqish tekshiruvi bayonotlarida I/U sinflarining ko'rinishini aniqlash
orqali tsikldan chiqish shartlari bevosita kiritish-chiqarish operatsiyalariga
bog'liqligini tekshiradi. 5-rasmda tsikldan chiqish sharti to'g'ridan-to'g'ri kiritish-
Do'stlaringiz bilan baham: