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Ç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:allDiff oxuyanda soruş: AI yoxlama yazanda qaydanı qəsdən poz: yoxlama qırmızı olurmu? Olmursa, o yoxlama heç nəyi qorumur.
Terminlər
İ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.
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
- 1Audit və arxitektura modullarından üç xətanı yoxlamaya çevir.
- 2Hamısını bir əmrlə işlət (məsələn, check:all).
- 3Qaydanı qəsdən poz və əmrin qırmızı olduğunu gör.
- 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