Jednostka 4 / 12

Przegląd kodu i wyszukiwanie błędów

Zyski:

  • Możliwość wykorzystania sztucznej inteligencji jako filtra wstępnej recenzji z kategoriami i tagami ważności
  • Możliwość filtrowania wyników za pomocą ludzkiego umysłu w celu weryfikacji/fałszywie pozytywnego wyniku/zastosowania
  • Możliwość egzekwowania wymagań dotyczących zatwierdzenia przez człowieka w przypadku reguł biznesowych, architektury i decyzji o znaczeniu krytycznym dla bezpieczeństwa

Przegląd kodu ma miejsce wtedy, gdy zmiana napisana przez programistę jest sprawdzana przez kogoś innego przed jej połączeniem. Dobra recenzja; Wcześnie wychwytuje błędy, udostępnia informacje i utrzymuje spójność bazy kodu. Ale recenzje są męczące, podatne na rozproszenie i stają się powierzchowne pod presją czasu. Sztuczna inteligencja jest tu podwójnym pomocnikiem: pozwala zarówno wstępnie wyczyścić własny kod, który przesyłasz do sprawdzenia, jak i dokładniej przyjrzeć się PR (pull request) innej osoby.

Zasadnicza różnica jest następująca: sztuczna inteligencja przyspiesza i usprawnia przegląd, ale nie może przejąć odpowiedzialności za zatwierdzenie. Zdanie „AI wygląda, jest czyste” nie jest aprobatą. Ostateczna decyzja o „scaleniu” należy do inżyniera, który zna kod i kontekst.

Przegląd tego, co AI jest dobre, a co złe

Dobre dla: Brak kontroli zerowej, wycieki zasobów (plik/łącze pozostają otwarte), nieprzechwycone wyjątki, oczywiście złe warunki (>= zamiast >), sugestie zmiany nazw, czytelność, brakujące przypadki, proste zapachy bezpieczeństwa (takie jak łączenie ciągów SQL), wykrywanie duplikatów kodu.

Słabe strony: Głębokie wady, które naruszają reguły biznesowe, ale wymagają kontekstu i czasu, takie jak logika poprawna składniowo, zgodność architektury, rzeczywiste wąskie gardła w wydajności, błędy współbieżności. Sztuczna inteligencja generuje również wyniki fałszywie pozytywne (myląc coś, co w rzeczywistości nie stanowi problemu z problemem) i fałszywie negatywne (pomijając prawdziwy błąd). Dlatego też jego wynik stanowi „listę ostrzeżeń”, a nie ostateczny werdykt.

Uwaga: to, że sztuczna inteligencja mówi „nie ma problemu”, nie oznacza, że ​​kod jest poprawny. Fałszywe negatywy milczą; Najbardziej niebezpieczne błędy to te, o których w recenzji nie wspomniano.

Systematyczne kroki przeglądu

  1. Podaj kontekst. Dodaj do zachęty cel zmiany, odpowiednią kwestię i kryteria akceptacji, jeśli takie istnieją. Bezcelowa recenzja generuje bezcelową interpretację.
  2. Podziel to na kategorie. Poproś model o sklasyfikowanie wyników jako „błąd/bezpieczeństwo/wydajność/czytelność/styl”; więc oddzielisz to, co krytyczne, od hałasu.
  3. Poproś o etykietę ważności. Każdemu znalezisku przypisz ocenę „wysoką/średnią/niską” i podaj „przyczynę” oraz „zalecaną korektę”.
  4. Przefiltruj to na własne oczy. Oceń każde znalezisko: czy jest prawdziwe (zweryfikuj), czy jest fałszywe (wpisz uzasadnienie), czy czegoś brakuje (dodaj własną wiedzę).
  5. Sprawdź ręcznie ścieżki krytyczne. Samodzielnie czytaj i wykonuj trasy obejmujące pieniądze, tożsamość, autoryzację i usuwanie danych, bez polegania na sztucznej inteligencji.

Trzy mini etui

Przypadek 1 — wykryto cichy błąd zerowy. Jeden zespół zlecił AI wstępne sprawdzenie PR składającego się z 380 linii. Model oznaczył sposób, w jaki odpowiedź usługi zewnętrznej może mieć wartość null, ale w kodzie nie sprawdzono tego. Osoba dokonująca przeglądu zweryfikowała tę ścieżkę i dodała kontrolę zerową; Podobny błąd spowodował 2-godzinną przerwę w produkcji w poprzednim kwartale.

Przypadek 2 – Eliminacja fałszywie pozytywna. Sztuczna inteligencja w pętli zasygnalizowała „możliwy problem z wydajnością”. Recenzent uznał to za fałszywy alarm, wiedząc, że pętla działa tylko z maksymalnie 5 elementami (zapętla się po wyliczeniu). Modelka, która nie znała kontekstu, ostrzegała; Osoba znająca kontekst podjęła właściwą decyzję.

Przypadek 3 – AI przeoczyła błąd reguły biznesowej. O ile konto rabatowe zgodnie z regułą kampanii powinno wynosić maksymalnie 30%, o tyle kod pozwalał na 50%. Sztuczna inteligencja nigdy nie zauważyła tego syntaktycznie doskonałego błędu logicznego; bo nie znał tej zasady. Błąd został wyłapany podczas recenzji dokonanej przez właściciela produktu, który znał kryteria akceptacji. Lekcja: weryfikacja reguł biznesowych to ludzka praca.

Cztery szablony do kopiowania

Zorientowana na cel, skategoryzowana recenzja:

Rola: Skrupulatny recenzent kodu. Cel zmiany: {{cel / problem}}Przejrzyj tę różnicę. Podaj wyniki w następujących kategoriach: [Błąd] [Bezpieczeństwo] [Wydajność] [Czytelność] [Styl]. Dla każdego wyniku: plik:wiersz, ważność (wysoka/średnia/niska), przyczyna, zalecana poprawka. Jeśli nie jesteś pewien, zaznacz „możliwe”. Nie znasz zasad biznesu; Zapytaj mnie o miejsca, które wymagają zasad.{{diff}}

Aby przygotować się do przeglądu własnego kodu:

Przejrzyj tę zmianę przed otwarciem żądania ściągnięcia. Poszukaj: braku wartości null/bugcheck, wycieku zasobów, przypadku Edge, tajnego, nietestowanego oddziału. Wymień ustalenia w kolejności ważności; zasugeruj korektę po 1 linijce dla każdego.{{code}}

Polowanie na sprawy Edge:

Wymień dane wejściowe i sytuacje, w których ta funkcja może się zepsuć: puste, null, za duże, ujemne, równoczesne wywołanie, błąd sieci, częściowe dane. Dla każdego przypadku napisz oczekiwane zachowanie i co zrobi bieżący kod.{{function}}

Skanowanie zapachu bezpieczeństwa (weryfikacja wstępna):

Poszukaj w tym kodzie typowych zapachów bezpieczeństwa: łączenie SQL/poleceń, niezweryfikowane dane wejściowe, niezmienny osadzony klucz tajny, niepewna deserializacja, brak sprawdzania uprawnień. Podziel ustalenia na „pewne / prawdopodobne / wiedza”. To wstępny przegląd; Nie jest to orzeczenie ostateczne.{{code}}

Słaba zachęta/silna zachęta

Słaby: „Czy w tym PR jest błąd?”
Mocne: „Cel: dodanie rabatu kuponowego do sumy koszyka (rabat nie może być większy niż 30% — sam nie możesz zweryfikować tej reguły, po prostu powiedz mi, czy kod nakłada górny limit). Zbadaj różnicę; podaj wnioski według kategorii + istotność + sugerowana korekta, zaznacz „możliwe” w przypadku niepewności. [różnica]”

Mocna wersja jasno określa intencję, zasadę biznesową i granice sztucznej inteligencji; W ten sposób następują przydatne odkrycia, a obszar nieznany modelowi pozostaje jasny.

Znalezienie typu

Niezawodność sztucznej inteligencji

rola mężczyzny

Brak kontroli zerowej/błędu

wysoki

Sprawdź i aplikuj

Czytelność/styl

wysoki

Wybierz według preferencji

Prosty zapach bezpieczeństwa

średni

Sfinalizuj, zeskanuj za pomocą pojazdu

Zgodność z regułami biznesowymi

niski

To całkowicie ludzkie.

Współbieżność/architektura

niski

Wymagana jest opinia eksperta

Przegląd AI nie zastępuje przeglądu człowieka

Ustaw recenzję AI jako „pierwszy filtr”: tanią, szybką i niestrudzoną wstępną przepustkę. Filtr ten uwalnia uwagę recenzenta od nieistotnych szczegółów (przestrzeń, nazwa) i kieruje ją do miejsc, które naprawdę wymagają przemyślenia – reguły biznesowej, architektury, wyniku bezpieczeństwa. Jednak zatwierdzenie połączenia jest podpisem odpowiedzialnej osoby w zespole. Niezależna ocena dokonana przez co najmniej jednego kompetentnego inżyniera jest obowiązkowa w przypadku zmian krytycznych dla bezpieczeństwa.

Wskazówka: przeczytaj listę ustaleń wygenerowanych przez sztuczną inteligencję jako „rzeczy do sprawdzenia”, a nie „do zrobienia”. Zweryfikuj i zastosuj każdy element lub zapisz w jednym zdaniu, dlaczego go zaliczyłeś; ten ślad sprawia, że ​​recenzja podlega audytowi.

Typowe błędy

  • Oznacza to „AI wyglądała, jest czysta”. Jest to fałszywe poczucie pewności spowodowane fałszywie negatywnymi wynikami.
  • Nie podając kontekstu. Bez kryteriów celu i akceptacji model generuje jedynie powierzchowne interpretacje stylu.
  • Ślepe stosowanie fałszywych alarmów. Naprawienie każdego ostrzeżenia modelu może spowodować uszkodzenie działającego kodu.
  • Zapytanie modelu o regułę biznesową. Model nie zna reguły; To człowiek musi to zweryfikować.
  • Nie dyskryminuj przemocy. Umieszczenie krytycznego ustalenia dotyczącego bezpieczeństwa i sugestii nazwiska w tej samej torbie przyćmiewa to, co ważne.

Podsumowując

Sztuczna inteligencja jest niestrudzonym pierwszym filtrem podczas przeglądu kodu: wyłapuje braki wartości null/błędy, przypadki Edge i ładnie pachnie prostym bezpieczeństwem; ale jest słaby w przypadku wad wymagających kontekstu, takich jak reguły biznesowe, architektura i współbieżność, i daje zarówno fałszywie pozytywne, jak i fałszywie negatywne wyniki. Żądaj wyników według kategorii i ważności, filtruj je za pomocą ludzkiej inteligencji, ręcznie weryfikuj ścieżki krytyczne. Zatwierdzenie jest zawsze podpisem odpowiedzialnego inżyniera.

Zadanie aplikacji

Wybierz prawdziwy lub niedawny PR/różnicę. Najpierw poproś sztuczną inteligencję o sprawdzenie tego za pomocą szablonu „zorientowany na cel, przegląd kategorii”. Umieść wnioski w tabeli i zdecyduj dla każdego z nich: prawda (zweryfikowałem), fałszywie pozytywny (oto moje rozumowanie) lub do wdrożenia. Następnie wybierz się na wycieczkę i spróbuj znaleźć przynajmniej jedną rzecz (zwłaszcza regułę biznesową lub przypadek brzegowy), której brakuje AI, i zapisz to.

lista kontrolna

  • [ ] Używam recenzji AI jako pierwszego filtra, a nie poparcia.
  • [ ] Dodaję cel i kryteria akceptacji do monitu o recenzję.
  • [ ] Oddzielam ustalenia od szumu według kategorii i bardzo ich pragnę.
  • [ ] Świadomie filtruję każde odkrycie, aby je potwierdzić/fałszywie pozytywne/zastosować.
  • [ ] Jako człowiek sprawdzam zgodność z regułami biznesowymi i architekturą.
  • [ ] Wymagam zgody wykwalifikowanego inżyniera na zmiany krytyczne dla bezpieczeństwa.