единица 4 / 12

Преглед на кода и откриване на грешки

Печалби:

  • Възможност за използване на AI като първоначален филтър за преглед с категории и маркери за тежест
  • Възможност за филтриране на констатации с човешки ум за проверка/фалшиво положително/прилагане
  • Възможност за налагане на изисквания за одобрение от хора за бизнес правила, архитектура и критични за сигурността решения

Преглед на кода е, когато промяна, написана от разработчик, се прегледа от някой друг, преди да бъде обединена. Добър преглед; Той улавя бъгове рано, споделя информация и поддържа кодовата база последователна. Но прегледите са уморителни, склонни към разсейване и стават повърхностни под натиска на времето. Изкуственият интелект тук е двоен помощник: той ви позволява както да почистите предварително собствения си код, който изпращате за преглед, така и да разгледате нечий друг PR (заявка за изтегляне) с по-остро око.

Критичното разграничение е следното: AI ускорява и подобрява прегледа, но не може да поеме отговорността за одобрение. Изречението „AI погледна, чисто е“ не е одобрение. Окончателното решение за „сливане“ зависи от инженер, който познава кода и контекста.

В прегледа за какво е добър и лош AI

Добър за: пропуски на нулева проверка, изтичане на ресурси (файл/връзка остават отворени), неуловени изключения, очевидно грешни условия (>= вместо >), предложения за преименуване, четливост, липсващи крайни букви, прости миризми на сигурност (като конкатенация на SQL низове), откриване на дублиран код.

Слабости: Дълбоки недостатъци, които нарушават вашето бизнес правило, но изискват контекст и време, като синтактично правилна логика, архитектурно съответствие, реални затруднения в производителността, грешки в паралелността. AI също произвежда фалшиви положителни резултати (сбъркайки нещо, което всъщност не е проблем с проблем) и фалшиви отрицателни резултати (пропускане на истинската грешка). Следователно изходът му е „списък с предупреждения“, а не окончателна присъда.

Внимание: Само защото AI казва „няма проблем“ не доказва, че кодът е правилен. Фалшивите негативи са тихи; Най-опасните грешки са тези, които никога не са споменати в прегледа.

Стъпки за систематичен преглед

  1. Дайте контекста. Добавете целта на промяната, съответния проблем и критериите за приемане, ако има такива, към подканата. Безцелният преглед води до безцелно тълкуване.
  2. Разделете го на категории. Помолете модела да класифицира констатациите като "бъг/сигурност/производителност/четимост/стил"; така че отделяте критичното от шума.
  3. Поискайте етикет за сериозност. Дайте на всяко откритие оценка „висок/среден/нисък“ и включете „причина“ и „препоръчителна корекция“.
  4. Филтрирайте го със собствените си очи. Оценете всяка констатация: истинска ли е (проверете), фалшиво положителна ли е (напишете обосновка), липсва ли нещо (добавете вашите собствени знания).
  5. Проверете критичните пътища ръчно. Прочетете и изпълнете сами маршрути, включващи пари, самоличност, оторизация и изтриване на данни, без да разчитате на AI.

Три мини калъфа

Случай 1 — Уловена е тиха нулева грешка. Един екип имаше AI предварителен преглед на 380-редов PR. Моделът отбеляза начин, по който отговор на външна услуга може да бъде нулев, но не бяха направени проверки за това в кода. Рецензентът провери този път и добави нулева проверка; Подобна грешка причини 2-часово прекъсване на производството през предходното тримесечие.

Случай 2 — Фалшиво положително елиминиране. AI маркира „възможен проблем с производителността“ в цикъл. Рецензентът затвори това като фалшиво положително, знаейки, че цикълът работи само с максимум 5 елемента (той преминава през enum). Моделът, който не знаеше контекста, предупреди; Човекът, който познаваше контекста, взе правилното решение.

Случай 3 — AI пропусна грешка в бизнес правилото. Докато сметката с отстъпка трябва да бъде максимум 30% според правилото на кампанията, кодът позволява 50%. AI никога не е забелязал тази синтактично перфектна логическа грешка; защото не знаеше правилото. Грешката беше уловена в прегледа от собственика на продукта, който знаеше критериите за приемане. Поука: валидирането на бизнес правила е човешка работа.

Четири копируеми шаблона

Целенасочен, категоризиран преглед:

Роля: Внимателен рецензент на кода. Цел на промяната: {{purpose / issue}}Прегледайте тази разлика. Предоставете констатации в тези категории: [Грешка] [Сигурност] [Производителност] [Четимост] [Стил]. За всяка констатация: файл: ред, сериозност (висока/средна/ниска), причина, препоръчителна корекция. Маркирайте „възможно“, ако не сте сигурни. Вие не знаете правилата на бизнеса; Попитайте ме за места, които изискват правила.{{diff}}

За да се подготвите да прегледате собствения си код:

Прегледайте тази промяна, преди да отворите PR. Потърсете: липсва null/bugcheck, изтичане на ресурси, edge case, secret, untested клон. Избройте констатациите по приоритет; предложи корекция по 1 ред за всеки.{{code}}

Търсене на крайни случаи:

Избройте входовете и ситуациите, при които тази функция може да се повреди: празно, нула, твърде голямо, отрицателно, едновременно повикване, мрежова грешка, частични данни. За всеки случай напишете очакваното поведение и какво ще направи текущият код.{{function}}

Сканиране на мирис за сигурност (предварителен преглед):

Потърсете общи миризми на сигурността в този код: конкатенация на SQL/команда, невалидиран вход, неизменна вградена тайна, несигурно десериализиране, липса на проверка на привилегии. Разделете констатациите на „сигурни / вероятни / знания“. Това е предварителен преглед; Това не е окончателно решение.{{code}}

Слаба подкана / Силна подкана

Слаб: „Има ли грешка в този PR?“
Силно: „Цел: добавете отстъпка на купона към общата сума на количката (отстъпката трябва да бъде не повече от 30% — не можете сами да проверите това правило, просто ми кажете дали кодът налага горна граница). Разгледайте разликата; дайте констатации по категория + тежест + предложена корекция, маркирайте „възможно“, ако не сте сигурни. [разл.]“

Силната версия ясно посочва намерението, бизнес правилото и границите на AI; Така идват полезни находки и непознатата за модела зона остава ясна.

Тип намиране

AI надеждност

мъжка роля

Липсва проверка за нула/грешка

високо

Потвърдете и приложете

Четивност/стил

високо

Изберете по предпочитание

Проста миризма на сигурност

среден

Финализиране, сканиране с превозно средство

Спазване на бизнес правила

ниско

Напълно човешко е.

Паралелност/архитектура

ниско

Необходим е експертен преглед

AI Review не е заместител на човешкия преглед

Позиционирайте AI прегледа като „първи филтър“: евтин, бърз, неуморен предварителен пропуск. Този филтър освобождава вниманието на рецензента от маловажни детайли (интервал, име) и го насочва към места, които наистина изискват обмисляне – бизнес правилото, архитектурата, резултатът от сигурността. Но одобрението за сливане е подпис на отговорно лице в екипа. Независимият преглед от поне един компетентен инженер е задължителен за критични за безопасността промени.

Съвет: Прочетете списъка с констатации, които AI произвежда като „неща за проверка“, а не като „да направите“. Или проверете и приложете всеки елемент, или напишете в едно изречение защо сте го преминали; това проследяване прави прегледа подлежащ на одит.

Често срещани грешки

  • Това означава "ИИ погледна, чисто е". Това е фалшиво чувство на увереност поради фалшиви негативи.
  • Не дава контекст. Без цел и критерии за приемане, моделът произвежда само повърхностни стилови интерпретации.
  • Сляпо прилагане на фалшиви положителни резултати. Коригирането на всяко предупреждение на модела може да наруши работещия код.
  • Попитайте модела за бизнес правилото. Моделът не познава правилото; От човека зависи да го провери.
  • Не дискриминирайте насилието. Поставянето на критична констатация за сигурността и предложение за име в една и съща чанта засенчва това, което е важно.

В обобщение

AI е неуморим първи филтър в прегледа на кода: той улавя пропуски на нулеви/грешки, крайни случаи и обикновена сигурност мирише добре; но е слаб по отношение на недостатъци, изискващи контекст, като бизнес правило, архитектура и паралелност, и произвежда както фалшиви положителни, така и фалшиви отрицателни резултати. Изисквайте констатации по категория и тежест, филтрирайте всеки с човешки интелект, ръчно проверете критичните пътища. Одобрението винаги е подпис на отговорен инженер.

Задача за приложение

Изберете реален или скорошен PR/diff. Първо, накарайте AI да го прегледа с шаблона „обективно ориентиран преглед на категории“. Поставете констатациите в таблица и решете за всяка от тях: вярно (проверих), фалшиво положително (ето моето разсъждение) или да се приложи. След това направете обиколка сами и се опитайте да намерите поне едно нещо (особено бизнес правило или ръбов случай), което липсва на AI и го запишете.

контролен списък

  • [ ] Използвам AI преглед като първи филтър, а не одобрение.
  • [ ] Добавям целта и критериите за приемане към подканата за преглед.
  • [ ] Отделям констатациите от шума по категории и силно ги желая.
  • [ ] Съзнателно филтрирам всяка констатация за потвърждение/фалшиво положително/прилагане.
  • [ ] Като човек проверявам бизнес правилата и съответствието с архитектурата.
  • [ ] Изисквам одобрение от квалифициран инженер за критични за безопасността промени.