단위 4 / 12

코드 검토 및 오류 찾기

이득:

  • 카테고리 및 심각도 태그가 있는 초기 검토 필터로 AI를 사용하는 기능
  • 사람의 마음으로 결과를 필터링하여 확인/거짓 긍정/적용하는 기능
  • 비즈니스 규칙, 아키텍처 및 보안에 중요한 결정에 대해 사람의 승인 요구 사항을 적용하는 기능

코드 검토는 개발자가 작성한 변경 사항을 병합하기 전에 다른 사람이 검토하는 것입니다. 좋은 리뷰; 버그를 조기에 포착하고, 정보를 공유하며, 코드 기반의 일관성을 유지합니다. 그러나 리뷰는 피곤하고 주의가 산만해지기 쉬우며 시간 압박으로 인해 피상적이 됩니다. 여기서 인공 지능은 이중 보조자입니다. 검토를 위해 제출한 자신의 코드를 사전 정리하고 다른 사람의 PR(풀 요청)을 보다 예리하게 검사할 수 있습니다.

중요한 차이점은 AI가 검토 속도를 높이고 강화하지만 승인에 대한 책임을 대신할 수는 없다는 것입니다. "AI가 봤더니 깨끗해요"라는 문장은 보증이 아닙니다. 최종 "병합" 결정은 코드와 컨텍스트를 아는 엔지니어의 몫입니다.

리뷰에서 AI의 좋은 점과 나쁜 점

장점: Null 검사 누락, 리소스 누수(열려 있는 파일/링크), 잡히지 않는 예외, 명백히 잘못된 조건(> 대신 >=), 제안 이름 바꾸기, 가독성, 엣지 케이스 누락, 단순한 보안 냄새(예: SQL 문자열 연결), 중복 코드 감지.

약점: 비즈니스 규칙을 위반하지만 구문적으로 올바른 논리, 아키텍처 준수, 실제 성능 병목 현상, 동시성 오류와 같이 컨텍스트와 타이밍이 필요한 심각한 결함입니다. AI는 또한 거짓 긍정(실제로 문제가 아닌 것을 문제로 착각)과 거짓 부정(실제 버그 누락)을 생성합니다. 따라서 그 결과는 최종 결론이 아닌 "주의 목록"입니다.

주의: AI가 "문제 없음"이라고 한다고 해서 코드가 정확하다는 것을 증명하는 것은 아닙니다. 거짓 부정은 침묵합니다. 가장 위험한 실수는 리뷰에서 전혀 언급되지 않은 실수입니다.

체계적인 검토 단계

  1. 맥락을 설명하세요. 변경 목적, 관련 문제 및 승인 기준(있는 경우)을 프롬프트에 추가합니다. 목적 없는 검토는 목적 없는 해석을 낳는다.
  2. 카테고리로 분류하세요. 모델에 결과를 "버그/보안/성능/가독성/스타일"로 분류하도록 요청합니다. 그래서 중요한 것과 소음을 분리합니다.
  3. 심각도 레이블을 요청합니다. 각 결과에 "높음/보통/낮음" 등급을 부여하고 "원인" 및 "권장 수정 사항"을 포함합니다.
  4. 눈으로 필터링해보세요. 각 결과를 평가합니다. 그것이 진짜인지(검증), 거짓 긍정인지(정당성 작성), 누락된 것이 있는지(자신의 지식 추가).
  5. 중요한 경로를 수동으로 확인하십시오. AI에 의존하지 않고 돈, 신원, 권한 부여 및 데이터 삭제와 관련된 경로를 직접 읽고 실행하십시오.

미니 케이스 3개

사례 1 - 자동 null 오류가 발생했습니다. 한 팀은 380라인 PR을 AI로 사전 검토했습니다. 모델은 외부 서비스 응답이 null이 될 수 있는 방식을 표시했지만 코드에서는 이에 대한 검사가 수행되지 않았습니다. 검토자가 이 경로를 확인하고 null 검사를 추가했습니다. 지난 분기에도 비슷한 오류로 인해 생산이 2시간 중단되었습니다.

사례 2 - 거짓 긍정 제거. AI는 루프에서 "가능한 성능 문제"를 표시했습니다. 리뷰어는 루프가 최대 5개의 요소(열거형에 대해 루프)에서만 작동한다는 것을 알고 이를 잘못된 긍정으로 종료했습니다. 맥락을 모르는 모델은 경고했다. 맥락을 아는 사람이 옳은 결정을 내린 것이다.

사례 3 — AI가 비즈니스 규칙을 놓쳤습니다. 오류. 할인계좌는 캠페인 규정에 따라 최대 30%까지 허용되어야 하는데 코드에서는 50%까지 허용하고 있습니다. AI는 구문적으로 완벽한 이 논리적 오류를 결코 알아차리지 못했습니다. 규칙을 몰랐기 때문이다. 승인 기준을 알고 있는 제품 소유자의 검토에서 버그가 발견되었습니다. 교훈: 비즈니스 규칙 검증은 인간의 일입니다.

복사 가능한 템플릿 4개

목적 지향적이고 분류된 검토:

역할: 꼼꼼한 코드 검토자. 변경 목적: {{목적/문제}}이 차이점을 검토하세요. [버그] [보안][성능] [가독성] [스타일] 카테고리에 결과를 제공하세요. 각 결과에 대해: 파일:행, 심각도(높음/보통/낮음), 원인, 권장 수정 사항. 확실하지 않은 경우 "가능"으로 표시하십시오. 당신은 비즈니스 규칙을 모릅니다. 규칙이 필요한 장소에 대해 물어보세요.{{diff}}

자신의 코드 검토를 준비하려면 다음을 수행하세요.

PR을 열기 전에 이 변경 사항을 검토하세요. 다음을 찾으십시오: null/버그 검사 누락, 리소스 누출, 극단적인 경우, 비밀, 테스트되지 않은 분기. 우선순위에 따라 조사 결과를 나열합니다. 각각에 대해 한 줄씩 수정을 제안합니다.{{코드}}

엣지 케이스 헌트:

비어 있음, null, 너무 큼, 음수, 동시 호출, 네트워크 오류, 부분 데이터 등 이 함수가 중단될 수 있는 입력 및 상황을 나열합니다. 각 경우에 대해 예상되는 동작과 현재 코드가 수행할 작업을 작성하세요.{{function}}

보안 향기 스캔(사전 심사):

이 코드에서 일반적인 보안 냄새(SQL/명령 연결, 검증되지 않은 입력, 불변의 내장 비밀, 안전하지 않은 역직렬화, 권한 검사 부족)를 찾아보세요. 조사 결과를 "확실함/가능성 있음/지식"으로 구분합니다. 이는 예비 심사입니다. 확정적인 판결은 아닙니다.{{code}}

약한 프롬프트 / 강한 프롬프트

약함: “이 PR에 실수가 있나요?”
Strong: "목적: 장바구니 총액에 쿠폰 할인을 추가합니다(할인은 30% 이하여야 합니다. 이 규칙을 직접 확인할 수는 없습니다. 코드가 상한을 부과하는지 알려주십시오.). 차이점을 조사하고 카테고리 + 심각도 + 제안된 수정 사항별로 결과를 제공하고 확실하지 않은 경우 '가능'으로 표시합니다. [diff]"

강력한 버전은 AI의 의도, 비즈니스 규칙 및 경계를 명확하게 명시합니다. 따라서 유용한 결과가 나오고 모델에 알려지지 않은 영역이 명확하게 유지됩니다.

발견 유형

AI 신뢰성

남자의 역할

Null/오류 검사 누락

높다

확인 및 적용

가독성/스타일

높다

취향에 따라 선택하세요

단순한 보안 냄새

중간

마무리, 차량으로 스캔

비즈니스 규칙 준수

낮음

그것은 완전히 인간입니다.

동시성/아키텍처

낮음

전문가의 검토가 필요합니다

AI 검토는 인간 검토를 대체하지 않습니다.

AI 검토를 "첫 번째 필터"로 지정합니다. 즉, 저렴하고 빠르며 지칠 줄 모르는 예비 통과입니다. 이 필터는 검토자의 주의를 중요하지 않은 세부 사항(공간, 이름)으로부터 해방시키고 비즈니스 규칙, 아키텍처, 보안 결과 등 실제로 생각이 필요한 부분으로 주의를 돌립니다. 그러나 병합 승인은 팀 내 책임 있는 사람의 서명입니다. 안전에 중요한 변경 사항에는 최소한 한 명의 유능한 엔지니어의 독립적인 검토가 필수입니다.

팁: AI가 "해야 할 일"이 아닌 "확인할 사항"으로 생성하는 결과 목록을 읽어보세요. 각 항목을 확인하고 적용하거나 합격 이유를 한 문장으로 적어보세요. 이 추적을 통해 검토를 감사할 수 있습니다.

일반적인 실수

  • "AI가 봤더니 깨끗하다"는 뜻이다. 이는 잘못된 부정으로 인한 잘못된 자신감입니다.
  • 맥락을 제공하지 않습니다. 목적과 수용 기준이 없으면 모델은 피상적인 스타일 해석만 생성합니다.
  • 맹목적으로 거짓 긍정을 적용합니다. 모델의 모든 경고를 수정하면 실행 중인 코드가 중단될 수 있습니다.
  • 모델에게 비즈니스 규칙에 대해 질문합니다. 모델은 규칙을 모릅니다. 그것을 검증하는 것은 사람의 몫이다.
  • 폭력을 차별하지 마십시오. 중요한 보안 결과와 이름 제안을 같은 가방에 넣으면 중요한 것이 무색해집니다.

요약하면

AI는 코드 검토에서 지치지 않는 첫 번째 필터입니다. null/오류 누락, 엣지 케이스 및 단순한 보안 냄새를 잘 포착합니다. 그러나 비즈니스 규칙, 아키텍처, 동시성과 같은 상황에 따른 결함에는 약하고 거짓 긍정과 거짓 부정을 모두 생성합니다. 카테고리 및 심각도별로 결과를 요청하고, 인간의 지능으로 각각을 필터링하고, 중요한 경로를 수동으로 확인하세요. 승인은 항상 책임 있는 엔지니어의 서명입니다.

응용과제

실제 또는 최근 PR/diff를 선택하세요. 먼저 '객관 지향 카테고리 리뷰' 템플릿으로 AI가 리뷰하도록 하세요. 결과를 표에 넣고 각각에 대해 참(내가 확인함), 거짓 긍정(내 추론은 이렇습니다) 또는 구현 여부를 결정합니다. 그런 다음 직접 둘러보고 AI가 놓친 것(특히 비즈니스 규칙이나 극단적인 경우)을 하나 이상 찾아 적어보세요.

체크리스트

  • [ ] 저는 AI 리뷰를 추천이 아닌 첫 번째 필터로 사용합니다.
  • [ ] 리뷰 프롬프트에 목적과 승인 기준을 추가합니다.
  • [ ] 나는 카테고리별로 노이즈와 결과를 분리하고 이를 강력하게 원합니다.
  • [ ] 나는 각 결과를 의식적으로 필터링하여 확인/거짓 긍정/적용을 수행합니다.
  • [ ] 인간으로서 비즈니스 규칙과 아키텍처 준수를 확인합니다.
  • [ ] 안전이 중요한 변경에 대해서는 자격을 갖춘 엔지니어의 승인이 필요합니다.