s21_tetris/materials/instructions_for_testing_uzb.md
2025-01-30 17:04:19 +00:00

4.7 KiB
Raw Blame History

Sinovlarni ishga tushirish boyicha korsatmalar

Togri chiqish malumotlarini sinovdan otkazishga qoshimcha ravishda, ushbu avtotest tizimi dasturing va uning manba kodini quyidagi bandlar boyicha tekshiradi:

  • Uslubiy testlar. Kodingning gozalligi standartlarga naqadar mos kelishini tekshirish uchun sen clang-format utiliti yordamida dasturidan foydalanib kodingni sinab korishing mumkin. materials/linters papkasida uslub testi uchun kerakli sozlamalarni oz ichiga olgan .clang-format fayli mavjud. Ushbu konfiguratsiya fayli oz tasirini direktoriyada yoki pastroqdagi direktoriyalarda joylashgan barcha fayllarga qollaydi. Shuning uchun, ushbu sozlamalar asosiy koding bolgan fayllaringga qollanilishi uchun.
    clang-format src papkasiga nusxala.

    Uslubni tekshirish uchun quyidagi buyruqni bajar:
    clang-format -n src/sourcefile_name.c

    clang-format yuklab olish uchun terminalga quyidagi buyruqlardan birini kirit:
    brew install clang-format
    yoki, agar senda root huquqlari bolsa (Ubuntu / Linux Mint / Debian uchun)
    sudo apt install clang-format

    Kerakli clang-format versiyasi:
    Mac 18.1.8
    Linux 18.1.8

    Google Style: https://google.github.io/styleguide/cppguide.html

  • Xotiraning to'g'ri ishlashini sinash. C dasturlarini yozishda xotiraning oqishiga e'tibor berish juda muhimdir. Buning uchun Unix-ga o'xshash operatsion tizimlarda ko'pincha valgrind utilitasi qo'llaniladi. Biroq, OS X da valgrind qollab-quvvatlashda muammolar mavjud, shuning uchun uning orniga leaks utilitasidan foydalanish mumkin.

    Hozir ushbu utilitalar ishlash mexanizmini korib chiqmaymiz - agar qiziq bolda, Googleda o'qishing mumkin.

LEAKS

Ushbu yordamchi dastur yordamida bajariladigan faylni ishga tushirish uchun terminalga kirit: leaks -atExit -- ./main.out | grep LEAK:

| grep LEAK: buyrugiga etibor ber. Biz uni qisqa chiqish uchun ishlatamiz, shunda biz agar mavjud bo'lsa faqat oqishlar bolgan chiziqlarni ko'rishimiz mumkin. Agar sen butun chiqarishni korishni istasang, shunchaki bu buyruqni ochirib tashla.

leaks yordamida bajariladigan faylni ishga tushirishda, xatolik togrisidagi xabar paydo bolishi mumkin:

dyld: could not load inserted library /usr/local/lib/libLeaksAtExit.dylib because image not found

leaks kutubxonani topa olmaganligi sababli xatolik yuzaga keladi libLeaksAtExit.dylib. \
Bunday holda quyidagi buyruqlarni kiritish kerak:

cd /usr/local/lib
sudo ln -s /Applications/Xcode.app/Contents/Developer/usr/lib/libLeaksAtExit.dylib

Qoshimcha:
Xotirada oqish borligi maʼlum boʻlgan funksiyalardagi oqib chiqishlarni filtrlash uchun leaks utilitasining -exclude bayrogʻidan foydalan. Bu bayroq leaks tomonidan berilayotgan malumotlarning oqishini kamaytirish imkonini beradi.

VALGRIND

valgrind kompyuterga ornatish uchun quyidagi buyruqlardan birini kirit:
brew install valgrind
yoki, agar sizda ildiz huquqlari bo'lsa (Ubuntu / Linux Mint / Debian uchun)
sudo apt install valgrind
Ushbu utilita yordamida bajariladigan faylni ishga tushirish uchun terminalga kirit:
valgrind --tool=memcheck --leak-check=yes ./main.out

OS X da valgrind foydalanish tavsiya etilmaydi, buning orniga leaks ishlatish yaxshiroqdir

  • Qoshimcha xotiraning togri ishlashini tekshirish. Yana bir variant sifatida xotirani qayta ishlashning to'g'riligini tekshirish va xotira oqishini kuzatish - gcc ichiga o'rnatilgan AddressSanitizer utilitalaridan foydalanish. Shu orinda takidlab otamizki, uni leaks yoki valgrind alohida ishlatish kerak, chunki u kompilyatsiyadan keyin avtomatik ravishda binary faylga ornatiladi va ushbu utilitalar bilan mos kelmasligi mumkin.

Uni kompilyatsiyalash paytida ishlatish uchun -fsanitize=address bayrog'ini belgilaymiz.

Masalan:

gcc -o main main.c -fsanitize=address

Va yigilgan dasturni odatdagi tarzda ishga tushiramiz. Bunday holda, xotira bilan bogliq xatolar mavjud bolsa, ular konsolda korsatiladi.

-fsanitize=address bayrog'idan tashqari quyidagi bayroqlardan ham foydalanish mumkin:

  • -fsanitize=leak - xotira oqishini kuzatish uchun. Shuningdek, qoshimcha ravishda leaks yoki valgrind yordamida oqishlarni tekshirishni ham unutma.
  • -fsanitize=undefined - aniqlanmagan dastur harakati joylarini aniqlash uchun (masalan, massiv chegarasidan tashqariga chiqish yoki intni haddan tashqari tolishi).
  • -fsanitize=unreachable - erishib bo'lmaydigan dastur nuqtalarini aniqlash uchun.

Yanada koproq bayroqlarni gcc va AddressSanitizer hujjatlarida topishing mumkin.