RƏSƏDXANA

Həftə 10 · 20/23

Layihəni qoruyan yoxlamalar

5 dəqiqəlik oxu

Binada yanğın siqnalı var. Heç vaxt sınanmayıbsa, yanğın günü susa bilər — və o gün öyrənmək üçün ən pis gündür.

Yoxlama layihənin siqnalıdır: qayda pozulanda qırmızı olmalıdır. Ona görə hər yoxlamanı bir dəfə qəsdən pozub işlədiyini görmək lazımdır.

const r = spawnSync("node", [file]);
if (r.status !== 0) failed++;     // the exit code cannot be faked
// counting "ok" lines can: a script that dies halfway printed some
Fərq ölçüdədir. Yarıda ölən proses də «ok» çap edir, amma exit code yalan danışmır.

Çox deyilən söz: Testlər sonraya qalan ayrıca işdir.

Çətinliklə öyrənilən hər dərs yoxlamaya çevrilir ki, eyni xəta səssizcə geri qayıtmasın. AI kodu sürətlə yazanda yoxlamalar əyləcdir: lint, tip yoxlaması, layihəyə xas qaydalar və hamısını işlədib exit code ilə hökm verən bir əmr.

Exit code ilə hökm ver

Çap olunan «ok» sətirlərini saymaq yalan deyə bilər: yarıda ölən skript də «ok» çap edir. Prosesin exit code-u saxtalaşdırıla bilməz.

AI belə yazır

const passed = (out.match(/^ok/gm) || []).length;
if (passed > 0) console.log("ALL GOOD");

Sən bunu istə

const r = spawnSync("node", [file]);
if (r.status !== 0) failed++;

Yoxlamanın uğursuz ola bildiyini sübut et

Heç vaxt qırmızı olmayan yoxlama qoruma deyil. Qaydanı qəsdən poz, qırmızı olduğunu gör, sonra geri qaytar.

Bir əmr, sonra CI

Bütün yoxlamalar bir əmrlə işləsin. Sonra onu hər push-da avtomatik işlət ki, unutmaq mümkün olmasın.

Sən bunu istə

name: checks
on: [push, pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22 }
      - run: npm ci && npm run check:all

Diff oxuyanda soruş: AI yoxlama yazanda qaydanı qəsdən poz: yoxlama qırmızı olurmu? Olmursa, o yoxlama heç nəyi qorumur.

Terminlər

static analysis
Kodu işlətmədən oxuyub problem axtarmaq.
invariant
Həmişə doğru qalmalı olan qayda: «heç bir endpoint istifadəçi id-sini gövdədən oxumur».
exit code
Prosesin bitəndə qaytardığı rəqəm: 0 uğur, qalanı uğursuzluq. Saxtalaşdırıla bilməyən yeganə xülasə.
golden set
Nəticənin əllə yoxlanmış düzgün cavablarla müqayisə edildiyi nümunələr.
CI
Hər push-da yoxlamaları avtomatik işlədən sistem (məsələn, GitHub Actions).

İndi sən yoxla

1Bu yoxlama skriptinin qüsuru nədir?

const r = spawnSync("node", ["check.mjs"], { encoding: "utf8" });
const passed = (r.stdout.match(/^ok/gm) || []).length;
console.log(passed > 0 ? "ALL GOOD" : "FAIL");

2«İnterfeys kilid deyil» dərsindən sonra avtomatik yoxlama üçün ən yaxşı invariant hansıdır?

Hazır prompt

İngiliscədir, çünki terminlər ingiliscədir. Tərcümə etsən də terminləri saxla.

prompt
Write a check script for this invariant: <rule>.

- It must exit non-zero on a violation and print the file:line that broke it.
- Add it to the aggregate check command.
- Then deliberately break the rule once, show me the check catching it,
  and revert the break.

Öz kodunda

  1. 1Audit və arxitektura modullarından üç xətanı yoxlamaya çevir.
  2. 2Hamısını bir əmrlə işlət (məsələn, check:all).
  3. 3Qaydanı qəsdən poz və əmrin qırmızı olduğunu gör.
  4. 4Sonra onu hər push-da CI-da işlət.

Bunu görəndə bitib: Bir əmr bütün yoxlamaları işlədir və qəsdən pozulmuş qayda onu qırmızı edir.

Daha dərinə

Oxumaq üçün

  • Beyond Vibe Coding: From Coder to AI-Era Developer · Addy Osmani, 2025 · Avtomatlaşdırılmış keyfiyyət qapıları
  • Vibe Coding: Building Production-Grade Software With GenAI, Chat, Agents, and Beyond · Gene Kim, Steve Yegge, 2025 · Sürət və əyləclər