Добивки:
- Способност да се користи вештачката интелигенција како првичен филтер за преглед со категории и ознаки за сериозност
- Способност да се филтрираат наодите со човечки ум за да се потврди/лажно позитивно/аплицира
- Способност да се наметнат барањата за човечко одобрување за деловните правила, архитектурата и безбедносните критични одлуки
Преглед на код е кога промената напишана од програмер ја прегледува некој друг пред да се спои. Добар преглед; Рано открива грешки, споделува информации и ја одржува конзистентна базата на кодови. Но, прегледите се заморни, склони кон одвлекување на вниманието и стануваат површни под временски притисок. Вештачката интелигенција е двократен асистент овде: ви овозможува однапред да го исчистите сопствениот код што го поднесувате на преглед и да испитате туѓи ПР (барање за повлекување) со поостро око.
Критичната разлика е ова: ВИ го забрзува и подобрува прегледот, но не може да ја преземе одговорноста за одобрување. Реченицата „ВИ изгледаше, чисто е“ не е одобрување. Конечната одлука за „спојување“ зависи од инженер кој го знае кодот и контекстот.
Што е добра и лоша вештачката интелигенција во преглед
Добро е за: промашување на нула проверка, протекување на ресурси (датотеката/врската останува отворена), неоткриени исклучоци, очигледно погрешни услови (>= наместо >), предлози за преименување, читливост, рабови што недостасуваат, едноставни мириси на безбедност (како спојување низи SQL), откривање дупликат код.
Слабости: Длабоки недостатоци кои го прекршуваат вашето деловно правило, но бараат контекст и тајминг, како што се синтаксички правилна логика, архитектонска усогласеност, реални тесни грла во изведбата, грешки во истовременост. Вештачката интелигенција, исто така, произведува лажни позитиви (помешувајќи нешто што всушност не е проблем за проблем) и лажни негативни (пропуштање на вистинската грешка). Затоа, неговиот излез е „список за претпазливост“, а не конечна пресуда.
Внимание: Само затоа што вештачката интелигенција вели „нема проблем“ не докажува дека кодот е точен. Лажните негативи молчат; Најопасните грешки се оние кои никогаш не се споменати во прегледот.
Систематски чекори за преглед
- Дајте го контекстот. Додадете ја целта на промената, релевантното прашање и критериумите за прифаќање, доколку ги има, во промптот. Ненамерниот преглед произведува бесцелно толкување.
- Поделете го во категории. Побарајте од моделот да ги класифицира наодите како „бубачки/безбедност/перформанси/читливост/стил“; па го одделуваш критичното од бучавата.
- Побарајте ознака за сериозност. На секој наод дајте му оцена „висока/средна/ниска“ и вклучете „причина“ и „препорачана корекција“.
- Филтрирајте го со свои очи. Оценете го секој наод: дали е реално (потврдете), дали е лажно позитивно (напишете оправдување), дали нешто недостасува (додајте го сопственото знаење).
- Рачно проверете ги критичните патеки. Сами читајте и извршувајте маршрути кои вклучуваат пари, идентитет, овластување и бришење податоци без да се потпирате на вештачка интелигенција.
Три мини футроли
Случај 1 - Фатена е тивка нулта грешка. Еден тим имал претходен преглед на вештачка интелигенција PR од 380 линии. Моделот означи начин на кој одговорот на надворешната услуга може да биде нула, но не беа направени проверки за тоа во кодот. Човечкиот прегледувач ја потврди оваа патека и додаде нулта проверка; Слична грешка предизвика 2-часовен прекин во производството во претходниот квартал.
Случај 2 - Лажно позитивна елиминација. ВИ означи „можен проблем со перформансите“ во јамка. Рецензентот го затвори ова како лажно позитивно, знаејќи дека јамката работи само со максимум 5 елементи (се превртува преку enum). Моделот, кој не го знаеше контекстот, предупреди; Лицето кое го знаеше контекстот ја донесе вистинската одлука.
Случај 3 - ВИ пропушти грешка во деловните правила. Додека сметката за попуст треба да биде максимум 30% според правилото на кампањата, кодот дозволува 50%. ВИ никогаш не ја забележа оваа синтаксички совршена логичка грешка; затоа што не го знаел правилото. Грешката беше фатена во прегледот од сопственикот на производот кој ги знаеше критериумите за прифаќање. Поука: потврдувањето на деловните правила е човечка работа.
Четири шаблони за копирање
Ориентиран кон цел, категоризиран преглед:
Улога: Прецизен прегледувач на кодови. Цел на промената: {{цел / прашање}}Прегледајте ја оваа разлика. Обезбедете наоди во овие категории: [Грешка] [Безбедност] [Изведба] [Читливост] [Стил]. За секој наод: датотека: ред, сериозност (висока/средна/ниска), причина, препорачана поправка. Означете „можно“ ако не сте сигурни. Не ги знаете деловните правила; Прашајте ме за местата што бараат правила.{{разлика}}
За да се подготвите да го прегледате вашиот сопствен код:
Прегледајте ја оваа промена пред да отворите ПР. Побарајте: недостасува нула/проверка на грешки, истекување на ресурси, куќиште на рабовите, тајна, непроверена гранка. Наведете ги наодите по приоритет; предложете корекција по 1 ред за секој.{{code}}
Лов на рабови:
Наведете ги влезовите и ситуациите каде што оваа функција може да се прекине: празна, нула, преголема, негативна, истовремен повик, мрежна грешка, делумни податоци. За секој случај, напишете го очекуваното однесување и што ќе направи тековниот код.{{function}}
Безбедносно скенирање на мирис (пред-скрининг):
Побарајте вообичаени безбедносни мириси во овој код: спојување на SQL/команда, невалиден влез, непроменлива вградена тајна, несигурна десеријализирање, недостиг на проверка на привилегии. Поделете ги наодите на „одредени / веројатни / знаења“. Ова е прелиминарен скрининг; Тоа не е дефинитивна пресуда.{{ код}}
Слаб промпт / Силен промпт
Слаб: „Дали има грешка во овој ПР?“
Силно: "Цел: додадете купон попуст во вкупниот број на количка (попустот не смее да биде поголем од 30% - не можете сами да го потврдите ова правило, само кажете ми дали кодот наметнува горна граница). Испитајте ги разликите; дајте наоди по категорија + сериозност + предложена корекција, означете „можно“ ако не сте сигурни. [разл]"
Силната верзија јасно ја наведува намерата, деловното правило и границата на вештачката интелигенција; Така, доаѓаат корисни наоди и областа непозната за моделот останува јасна.
Наоѓање тип
Доверливост на ВИ
улогата на човекот
Недостасува проверка на нула/грешка
високо
Потврдете и аплицирајте
Читливост/стил
високо
Изберете по желба
Едноставен безбедносен мирис
средно
Финализирај, скенирај со возило
Усогласеност со деловните правила
низок
Тоа е целосно човечко.
Конкурентност/архитектура
низок
Потребна е стручна проверка
Прегледот на вештачката интелигенција не е замена за човечки преглед
Поставете го прегледот на вештачката интелигенција како „прв филтер“: евтин, брз, неуморен прелиминарен пасус. Овој филтер го ослободува вниманието на човечкиот рецензент од неважни детали (простор, име) и го насочува кон места за кои навистина е потребна мисла - деловното правило, архитектурата, безбедносниот резултат. Но, одобрувањето за спојување е потпис на одговорно лице во тимот. Задолжителен е независен преглед од најмалку еден компетентен инженер за безбедносни критични промени.
Совет: Прочитајте го списокот со наоди што вештачката интелигенција ги произведува како „работи што треба да се проверат“, а не како „да се прават“. Или проверете ја и применете ја секоја ставка или запишете во една реченица зошто сте ја донеле; оваа трага го прави прегледот ревизорски.
Вообичаени грешки
- Тоа значи „Ви изгледаше, чисто е“. Ова е лажно чувство на доверба поради лажни негативи.
- Не давајќи контекст. Без цел и критериуми за прифаќање, моделот произведува само површни стилски интерпретации.
- Слепо примена на лажни позитиви. Поправањето на секое предупредување на моделот може да го скрши кодот за работа.
- Прашање на моделот за деловното правило. Моделот не го знае правилото; Останува на човекот да го потврди тоа.
- Не дискриминирајте насилство. Ставањето критички безбедносен наод и предлог за име во иста торба го засенува она што е важно.
Сумирано
Вештачката интелигенција е неуморен прв филтер во прегледот на кодот: добро ги фаќа промашувањата на нула/грешки, рабовите и едноставните безбедносни мириси; но е слаб во однос на недостатоците кои бараат контекст, како што се деловното правило, архитектурата и истовременоста, и произведува и лажни позитивни и лажни негативни. Барајте наоди по категорија и сериозност, филтрирајте го секој со човечка интелигенција, рачно проверете ги критичните патеки. Одобрувањето е секогаш потпис на одговорен инженер.
Задача за апликација
Изберете вистински или неодамнешен ПР/разлика. Прво, нека ја прегледа вештачката интелигенција со шаблонот „објективно-ориентиран, преглед на категорија“. Ставете ги наодите во табела и одлучете за секој од нив: точно (потврдив), лажно позитивно (еве го моето расудување) или да се спроведе. Потоа прошетајте сами и обидете се да пронајдете барем една работа (особено деловно правило или раб) што недостасува на вештачката интелигенција и запишете ја.
листа за проверка
- [ ] Јас користам преглед на вештачката интелигенција како прв филтер, а не како поддршка.
- [ ] Ги додавам целта и критериумите за прифаќање на барањето за преглед.
- [ ] Ги одвојувам наодите од бучавата по категории и силно ги посакувам.
- [ ] Свесно го филтрирам секој наод за да потврдам/лажно позитивно/примени.
- [ ] Како човек, ги проверувам деловните правила и архитектонската усогласеност.
- [ ] Барам одобрение од квалификуван инженер за безбедносни критични промени.