Mga nadagdag:
- Kakayahang gumamit ng AI bilang paunang filter ng pagsusuri na may mga kategorya at tag ng kalubhaan
- Kakayahang i-filter ang mga natuklasan gamit ang isip ng tao upang i-verify/false positive/apply
- Kakayahang ipatupad ang mga kinakailangan sa pag-apruba ng tao sa panuntunan ng negosyo, arkitektura at mga desisyong kritikal sa seguridad
Ang pagsusuri ng code ay kapag ang isang pagbabagong isinulat ng isang developer ay sinuri ng ibang tao bago ito pinagsama. Magandang pagsusuri; Maagang nahuhuli nito ang mga bug, nagbabahagi ng impormasyon, at pinananatiling pare-pareho ang code base. Ngunit ang mga pagsusuri ay nakakapagod, madaling makagambala, at nagiging mababaw sa ilalim ng presyon ng oras. Ang artificial intelligence ay isang two-fold assistant dito: pinapayagan ka nitong parehong paunang linisin ang sarili mong code na isinumite mo para sa pagsusuri at suriin ang PR (pull request) ng ibang tao nang may mas matalas na mata.
Ang kritikal na pagkakaiba ay ito: Ang AI ay nagpapabilis at nagpapahusay ng pagsusuri, ngunit hindi nito maaako ang responsibilidad para sa pag-apruba. Ang pangungusap na "AI looked, it's clean" ay hindi isang pag-endorso. Ang panghuling desisyong "pagsamahin" ay nasa isang engineer na nakakaalam ng code at konteksto.
Ano ang Maganda at Masamang AI sa Pagsusuri
Mabuti para sa: Null check miss, resource leaks (file/link nananatiling bukas), uncaught exception, obviously wrong condition (>= instead of >), pagpapalit ng pangalan sa mga suhestyon, readability, missing edge case, simpleng security smell (tulad ng SQL string concatenation), duplicate code detection.
Mga Kahinaan: Mga malalalim na depekto na lumalabag sa panuntunan ng iyong negosyo ngunit nangangailangan ng konteksto at timing, gaya ng syntactically correct logic, pagsunod sa arkitektura, mga bottleneck ng tunay na performance, concurrency error. Gumagawa din ang AI ng mga maling positibo (napagkakamalan ang isang bagay na hindi naman talaga problema para sa isang problema) at mga maling negatibo (nawawala ang totoong bug). Samakatuwid, ang output nito ay isang "listahan ng pag-iingat", hindi isang tiyak na hatol.
Babala: Dahil lang sa sinabi ng AI na "walang problema" ay hindi nagpapatunay na tama ang code. Ang mga maling negatibo ay tahimik; Ang pinaka-mapanganib na mga pagkakamali ay ang mga hindi nabanggit sa pagsusuri.
Mga Hakbang sa Systematic Review
- Ibigay ang konteksto. Idagdag ang layunin ng pagbabago, ang nauugnay na isyu at ang pamantayan sa pagtanggap, kung mayroon man, sa prompt. Ang walang layunin na pagsusuri ay gumagawa ng walang layunin na interpretasyon.
- Hatiin ito sa mga kategorya. Hilingin sa modelo na uriin ang mga natuklasan bilang "bug/security/performance/readability/style"; kaya ihiwalay mo ang kritikal sa ingay.
- Humiling ng label ng kalubhaan. Bigyan ang bawat paghahanap ng "high/medium/low" na rating at isama ang "sanhi" at "inirerekomendang pagwawasto."
- Salain ito gamit ang iyong sariling mga mata. Suriin ang bawat paghahanap: ito ba ay totoo (i-verify), ito ba ay isang maling positibo (isulat ang katwiran), mayroon bang anumang nawawala (idagdag ang iyong sariling kaalaman).
- Manu-manong i-verify ang mga kritikal na landas. Magbasa at magsagawa ng mga rutang kinasasangkutan ng pera, pagkakakilanlan, awtorisasyon at pagtanggal ng data nang hindi umaasa sa AI.
Tatlong Mini Case
Case 1 — Nahuli ang tahimik na null error. Isang team ang nagkaroon ng AI pre-review ng 380-line PR. Ang modelo ay nag-flag ng isang paraan kung saan ang isang panlabas na tugon sa serbisyo ay maaaring maging null, ngunit walang mga pagsusuri na ginawa para dito sa code. Na-verify ng human reviewer ang path na ito at nagdagdag ng null check; Ang isang katulad na error ay nagdulot ng 2 oras na pagkaantala sa produksyon sa nakaraang quarter.
Kaso 2 — Maling positibong pag-aalis. Nag-flag ang AI ng "posibleng isyu sa pagganap" sa isang loop. Isinara ito ng reviewer bilang false positive, alam na gumagana lang ang loop sa maximum na 5 elemento (nag-loop ito sa isang enum). Ang modelo, na hindi alam ang konteksto, ay nagbabala; Ang taong alam ang konteksto ay gumawa ng tamang desisyon.
Kaso 3 — Hindi nakuha ng AI ang error sa panuntunan sa negosyo. Bagama't ang isang discount account ay dapat na maximum na 30% ayon sa panuntunan ng campaign, pinapayagan ng code ang 50%. Hindi kailanman napansin ng AI ang syntactically perfect logical error na ito; dahil hindi niya alam ang patakaran. Ang bug ay nakuha sa pagsusuri ng may-ari ng produkto na alam ang pamantayan sa pagtanggap. Aralin: ang pagpapatunay ng panuntunan sa negosyo ay isang trabaho ng tao.
Apat na Nakokopyang Template
Nakatuon sa layunin, nakategorya na pagsusuri:
Tungkulin: Maselang tagasuri ng code. Layunin ng pagbabago: {{purpose / issue}}Suriin ang diff na ito. Magbigay ng mga natuklasan sa mga kategoryang ito: [Bug] [Security][Performance] [Readability] [Estilo]. Para sa bawat paghahanap: file:row, severity(high/medium/low), sanhi, inirerekomendang pag-aayos. Markahan ang "posible" kung hindi ka sigurado. Hindi mo alam ang mga patakaran ng negosyo; Tanungin ako tungkol sa mga lugar na nangangailangan ng mga panuntunan.{{diff}}
Upang maghanda upang suriin ang iyong sariling code:
Suriin ang pagbabagong ito bago magbukas ng PR. Hanapin ang: nawawalang null/bugcheck, resource leak, edge case, secret, untested branch. Ilista ang mga natuklasan ayon sa priyoridad; magmungkahi ng pagwawasto ng 1 linya para sa bawat isa.{{code}}
Panghuli ng kaso sa gilid:
Ilista ang mga input at sitwasyon kung saan maaaring masira ang function na ito: walang laman, null, masyadong malaki, negatibo, kasabay na tawag, error sa network, bahagyang data. Para sa bawat kaso, isulat ang inaasahang gawi at kung ano ang gagawin ng kasalukuyang code.{{function}}
Security scent scanning (pre-screening):
Maghanap ng mga karaniwang amoy ng seguridad sa code na ito: SQL/command concatenation, unvalidated input, immutable embedded secret, insecure deserialize, kawalan ng privilege checking. Paghiwalayin ang mga natuklasan sa "tiyak / malamang / kaalaman". Ito ay isang preliminary screening; Ito ay hindi isang tiyak na pasya.{{code}}
Mahinang prompt / Malakas na prompt
Mahina: "May pagkakamali ba sa PR na ito?"
Strong: "Layunin: magdagdag ng coupon discount sa cart total (discount ay dapat na hindi hihigit sa 30% — hindi mo mabe-verify ang panuntunang ito sa iyong sarili, sabihin lang sa akin kung ang code ay nagpapataw ng mas mataas na limitasyon). Suriin ang diff; magbigay ng mga natuklasan ayon sa kategorya + kalubhaan + iminungkahing pagwawasto, markahan ang 'posible' kung hindi sigurado. [diff]"
Ang malakas na bersyon ay malinaw na nagsasaad ng layunin, tuntunin sa negosyo, at hangganan ng AI; Kaya, ang mga kapaki-pakinabang na natuklasan ay dumating at ang lugar na hindi alam sa modelo ay nananatiling malinaw.
Uri ng paghahanap
pagiging maaasahan ng AI
tungkulin ng tao
Walang null/error check
mataas
I-verify at ilapat
Readability/style
mataas
Pumili ayon sa kagustuhan
Simpleng amoy ng seguridad
daluyan
Tapusin, i-scan gamit ang sasakyan
Pagsunod sa panuntunan ng negosyo
mababa
Ito ay ganap na tao.
Concurrency/arkitektura
mababa
Kinakailangan ang pagsusuri ng eksperto
Ang Pagsusuri ng AI ay Hindi Kapalit ng Pagsusuri ng Tao
Iposisyon ang pagsusuri sa AI bilang isang "unang filter": isang mura, mabilis, walang kapagurang paunang pass. Pinalalaya ng filter na ito ang atensyon ng tagasuri ng tao mula sa mga hindi mahalagang detalye (isang espasyo, isang pangalan) at idinidirekta ito sa mga lugar na talagang nangangailangan ng pag-iisip—ang panuntunan sa negosyo, ang arkitektura, ang resulta ng seguridad. Ngunit ang pag-apruba ng pagsasama ay ang lagda ng isang may pananagutan na tao sa loob ng koponan. Ang independiyenteng pagsusuri ng hindi bababa sa isang karampatang inhinyero ay sapilitan para sa mga pagbabagong kritikal sa kaligtasan.
Tip: Basahin ang listahan ng mga natuklasan na ginawa ng AI bilang isang "mga bagay na dapat suriin" sa halip na isang "gawin". I-verify at ilapat ang bawat item o isulat sa isang pangungusap kung bakit mo ito naipasa; ginagawang auditable ng trace na ito ang pagsusuri.
Mga karaniwang pagkakamali
- Ibig sabihin ay "AI ay tumingin, ito ay malinis". Ito ay isang maling pakiramdam ng kumpiyansa dahil sa mga maling negatibo.
- Hindi nagbibigay ng konteksto. Kung walang layunin at pamantayan sa pagtanggap, ang modelo ay gumagawa lamang ng mga mababaw na interpretasyon sa istilo.
- Walang bulag na paglalapat ng mga maling positibo. Ang pag-aayos sa bawat babala ng modelo ay maaaring masira ang tumatakbong code.
- Pagtatanong sa modelo tungkol sa tuntunin ng negosyo. Hindi alam ng modelo ang panuntunan; Nasa tao ang patunay nito.
- Huwag magdiskrimina laban sa karahasan. Ang paglalagay ng isang kritikal na paghahanap sa seguridad at isang mungkahi ng pangalan sa parehong bag ay natatabunan kung ano ang mahalaga.
Sa buod
Ang AI ay isang walang pagod na unang filter sa pagsusuri ng code: nakakakuha ito ng mga null/error miss, edge case, at simpleng seguridad na amoy na rin; ngunit mahina ito sa mga kapintasan na nangangailangan ng konteksto gaya ng panuntunan sa negosyo, arkitektura, at pagkakatugma, at gumagawa ng parehong maling positibo at maling negatibo. Humiling ng mga natuklasan ayon sa kategorya at kalubhaan, i-filter ang bawat isa gamit ang katalinuhan ng tao, manu-manong i-verify ang mga kritikal na landas. Ang pag-apruba ay palaging pirma ng isang responsableng inhinyero.
Gawain ng aplikasyon
Pumili ng totoo o kamakailang PR/diff. Una, ipasuri ito sa AI gamit ang template na "nakatuon sa layunin, pagsusuri sa kategorya". Ilagay ang mga natuklasan sa isang talahanayan at magpasya para sa bawat isa: totoo (na-verify ko), maling positibo (narito ang aking pangangatwiran), o ipapatupad. Pagkatapos ay maglibot sa iyong sarili at subukang maghanap ng hindi bababa sa isang bagay (lalo na ang isang patakaran sa negosyo o edge case) na nawawala ang AI at isulat ito.
checklist
- [ ] Gumagamit ako ng pagsusuri sa AI bilang unang filter, hindi isang pag-endorso.
- [ ] Idinaragdag ko ang layunin at pamantayan sa pagtanggap sa prompt ng pagsusuri.
- [ ] Pinaghiwalay ko ang mga natuklasan mula sa ingay ayon sa kategorya at lubos kong gusto ang mga ito.
- [ ] Sinasadya kong sinasala ang bawat paghahanap para makumpirma/maling positibo/mag-apply.
- [ ] Bilang isang tao, sinusuri ko ang panuntunan sa negosyo at pagsunod sa arkitektura.
- [ ] Nangangailangan ako ng pag-apruba mula sa isang kwalipikadong inhinyero para sa mga pagbabagong kritikal sa kaligtasan.