AXV

Code Review va Branch Protection

Kodni jamoa bilan sayqallaymiz, main tarmog'ini esa qulflaymiz

11-sinfProfessional IT development2-hafta · 6-dars

Bugun nimani o'rganamiz?

Code Review

Nima uchun kerak va qanday o'tkaziladi

Etika va daraja

Odamni emas, kodni tahlil qilamiz. Blocker va Nitpick

Branch Protection

main tarmog'ini qulflaymiz

Review hajmi muhim

0
qator: eng samarali tekshirish hajmi
0
qatordan keyin xatoni ilg'ash keskin pasayadi
0
gacha tushadi (SmartBear tadqiqoti)

Xulosa: PR kichik bo'lsin, review sifatli bo'ladi.

01

Code Review nima?

Birlashtirishdan oldin boshqa muhandis kodni o'qib, tahlil qiladi

Review sikli

Branch PR Review Tuzatish Merge qayta ko'rib chiqish

Qismlar ustiga bosing. Tuzatish va Review bir necha marta takrorlanishi mumkin.

Nega Code Review kerak?

Xatolar

Yangi nigoh xatoni erta ilg'aydi

Xavfsizlik

Ochiq parol, SQL inyeksiya, ruxsatsiz kirish

Bilim almashish

Yosh dasturchi tajribalidan o'rganadi

Kod tozaligi

Yagona format va me'moriy uslub

Rollar: bosing va aylantiring

Author

bosing

Kodni yozgan va Pull Request ochgan muallif.

Reviewer

bosing

Kodni o'qib, tahlil qilib, fikr bildiruvchi tekshiruvchi.

Inline Comment

bosing

Kodning aynan bitta qatoriga qoldirilgan aniq sharh.

02

Review etikasi

Bu kim aqlliroq ekanini isbotlash musobaqasi emas

Kodni tanqid qiling, shaxsni emas

Noto'g'ri

«Sen bu yerda juda xunuk va sekin kod yozgansan.»
VS

To'g'ri

«Bu sikl katta ro'yxatlarda sekinlashishi mumkin. Keling, uni lug'at (hashmap) orqali O(1) tezlikka keltiramiz.»
Dalil va taklif bor: sharh hujum emas, hamkorlik.

Buyruq emas, savol bering

Noto'g'ri

«Bu funksiyani 3 ga bo'l!»
VS

To'g'ri

«Funksiya 80 qatordan oshibdi. Testlash osonroq bo'lishi uchun 2 ta kichik funksiyaga ajratsak qanday qaraysiz?»

Sabab keltiring. Yaxshi yechimni ham maqtang. Pastga ↓

Maqtashni unutmang

«Ajoyib yechim, menga juda yoqdi!»

Review faqat xato topish emas. Nafis algoritm yozgan hamkasbga shunday sharh qoldiring.

Psixologik xavfsizlik

  • Dasturchi kodiga o'z farzandidek bog'lanadi
  • Keskin sharh g'ururga tegadi va tushkunlikka soladi
  • So'zni to'g'ri tanlash texnik bilimdan kam emas

Mini-test: qaysi sharh yaxshi?

Hamkasbingiz sekin sikl yozgan. Qaysi sharh professional?

To'g'ri: sabab bor, shaxs emas kod tahlil qilinadi, taklif hamkorlik ohangida.

Reviewer uchun 5 ta savol

  1. Mantiq: kod vazifani to'g'ri bajaryaptimi?
  2. Chekka holatlar: bo'sh ro'yxat, nol, xato parol
  3. Xavfsizlik: ochiq parol yoki shifrlanmagan ma'lumot yo'qmi?
  4. O'qilishi: 6 oydan keyin tushunish oson bo'ladimi?
  5. Testlar: unit testlar qo'shilganmi?
03

Blocker va Nitpick

Pashshadan fil yasamang: jiddiylikni ajrating

Sharhning jiddiylik darajasi

Blockerkritik xato Nitpickmayda maslahat Jiddiylik?reviewer hal qiladi Request changesmerge taqiqlanadi nit: ixtiyoriyPR to'xtamaydi

Qismlarni bosing: izoh chiqadi.

Misollar: qaysi biri qaysi?

Tuzatish majburiy

  • Tizim qulashiga olib keladigan xato
  • Token ochiq qolgan (xavfsizlik)
  • Biznes mantiq noto'g'ri ishlaydi
  • Testlar yo'q

Ixtiyoriy, `nit:` bilan

  • O'zgaruvchini boshqacha atash
  • Ortiqcha bitta bo'sh qator
  • Shaxsiy ta'bga bog'liq mayda uslub

Mini-test: Blocker yoki Nitpick?

Login funksiyasi bo'sh parolda server 500 xatosi berib qulaydi. Bu nima?

To'g'ri: server qulashi kritik xato, tuzatilmaguncha merge qilib bo'lmaydi.
04

GitHub review asboblari

Files changed, inline sharh va suggestion

Files changed

github.com/jamoa/loyiha/pull/7

calculate.py

+ qator ustiga kursor olib boring va + bosing

Files changed

github.com/jamoa/loyiha/pull/7

calculate.py

+ qator ustiga kursor olib boring va + bosing

Reviewer: Bu sikl katta ro'yxatda sekin. Taklif kodini ko'ring. [Commit suggestion]

Taklif kodi (suggestion)


```suggestion
def calculate_total(items):
    return sum(item.price for item in items)
```
  
Author bitta bosishda Commit suggestion qiladi: o'z kompyuterida yozishi shart emas.

Review yakuni: 3 ta qaror

PR Comment: faqat savol Approve: merge mumkin Request changes: tuzat
05

Branch Protection

Hatto jamoa sardori ham main ni xato bilan buza olmaydi

Himoyalangan main

feature Pull Request Qulf1 approveCI yashil main to'g'ridan-to'g'ri push: rad etiladi

Qismlarni bosing. Pastki yo'l main ga yopiq.

Push rad etiladi


git push origin main
remote: error: GH006: Protected branch update failed
remote: for refs/heads/main.
  
Xato matnida GH006 kodini ko'rasiz: bu himoya ishlayotganining belgisi.

Sozlash: qadam-baqadam

1. Settings, Branches

Repo ichida Settings, chap menyudan Branches, so'ng qoida qo'shish.

2. Branch name pattern

Maydonga main deb yozing.

3. Require a pull request

To'g'ridan-to'g'ri git push origin main butunlay bloklanadi.

4. Require approvals

Kamida 1 nafar (yoki 2) boshqa muhandis Approve bosmaguncha Merge nofaol.

5. Status checks, Save

CI testlari o'tmaguncha merge taqiqlanadi. Keyin Save changes.

Hatto xo'jayin ham buza olmaydi

«Do not allow bypassing the above settings»
  • Professional kompaniyalarda bu band yoqiladi
  • Repo egasi ham kamida bitta muhandis tasdig'isiz main ga kod qo'sha olmaydi

Amaliy topshiriq 20 daqiqa

OsonSQL kodiga xavfsizlik sharhi yozing: "... name = '" + user_input + "'"
O'rtaRepoda main uchun Branch Protection (1 approve) sozlang va push'ni sinang
QiyinHamkasb PR'iga Request changes bering, tuzatilgach Approve va squash merge

Xulosa

Bugun o'rgandik

Review etikasi, Blocker va Nitpick, suggestion, Branch Protection

Uyga vazifa

Portfolio repoda main himoyasi va PR'da 2 ta inline sharh (biri suggestion)

Keyingi hafta: Clean Code va SOLID tamoyillari (SRP, OCP, LSP, ISP, DIP)