Statik tahlil
Statik tahlil dasturiy ta'minotni ishlab chiqish amaliyotida deyarli dasturiy ta'minotni ishlab chiqishning o'zi mavjud bo'lgan vaqtdan beri mavjud. Asl ko'rinishida tahlil dasturlash uslubi standartlariga (lint) muvofiqligini nazorat qilish uchun qisqartirildi. Ishlab chiquvchilar undan to'g'ridan-to'g'ri ish joylarida foydalanishgan. Xatolarni aniqlash haqida gap ketganda, dastlabki statik tahlil vositalari yuzaki narsaga e'tibor qaratdi: dasturlash uslubi va umumiy sintaktik xatolar. Masalan, hatto eng oddiy statik tahlil vositalari ham shunday xatolikni aniqlay oladi:
int foo(int x, int* ptr) ( if(x & 1); ( *ptr = x; qaytish; ) ... )
Bu erda qo'shimcha nuqta-verguldan noto'g'ri foydalanish potentsial halokatli natijalarga olib keladi: funktsiyaning kirish parametri ko'rsatkichi kutilmagan sharoitlarda qayta aniqlanadi. Ko'rsatkich tekshirilayotgan shartdan qat'i nazar, har doim qayta aniqlanadi.
Dastlabki tahlil vositalari asosan sintaktik xatolarga qaratilgan. Shunday qilib, jiddiy xatolar topilgan bo'lsa-da, topilgan muammolarning aksariyati nisbatan ahamiyatsiz edi. Bundan tashqari, aniq natijalarni kutish mumkin bo'lgan vositalar uchun etarlicha kichik kod konteksti taqdim etildi. Buning sababi shundaki, ish odatdagi ishlab chiqish kompilyatsiya/bog'lanish tsikli davomida amalga oshirilgan va ishlab chiquvchi nima qilayotgani katta hajmdagi kichik kod bo'lagi edi. dasturiy ta'minot tizimi. Bunday kamchilik tahlil vositalarining ishlab chiquvchining "qum qutisi" dan tashqarida nima bo'lishi mumkinligi haqidagi taxminlar va farazlarga asoslanganligiga olib keldi. Va bu, o'z navbatida, "noto'g'ri ijobiy" hisobotlar hajmining oshishiga olib keldi.
Statik tahlil vositalarining keyingi avlodlari bu kamchiliklarni bartaraf etib, ularning qamrovini sintaktik va semantik tahlildan tashqari kengaytirdi. Yangi vositalarda yaratilgan kodning kengaytirilgan tasviri yoki modeli qurilgan (kompilyatsiya bosqichiga o'xshash narsa), so'ngra kodni bajarishning barcha mumkin bo'lgan usullari modelga muvofiq modellashtirilgan. Keyinchalik, mantiqiy oqimlar ma'lumotlar ob'ektlari qanday va qayerda yaratilishi, ishlatilishi va yo'q qilinishini bir vaqtning o'zida nazorat qilish bilan ushbu yo'llarga ko'rsatildi. Dastur modullarini tahlil qilish jarayonida protseduralararo nazorat va ma'lumotlar oqimini tahlil qilish protseduralari ulanishi mumkin. Shuningdek, u noto'g'ri yo'llarni kesish, o'zgaruvchilar qabul qilishi mumkin bo'lgan qiymatlarni baholash va real vaqtda ishlayotganda potentsial xatti-harakatlarni modellashtirish uchun yangi yondashuvlardan foydalangan holda "noto'g'ri ijobiy" ni kamaytiradi. Statik tahlil vositalarida ushbu darajadagi ma'lumotlarni yaratish uchun loyihaning butun kod bazasini tahlil qilish, tizimning integral sxemasini amalga oshirish kerak va faqat ishlab chiquvchining ish stolidagi "qum qutisi" da olingan natijalar bilan ishlash kerak.
Ushbu murakkab tahlil shakllarini amalga oshirish uchun statik tahlil vositalari ikkita asosiy turdagi kod tekshiruvlari bilan shug'ullanadi:
Do'stlaringiz bilan baham: |