Lợi nhuận:
- Khả năng sử dụng AI làm bộ lọc đánh giá ban đầu với các danh mục và thẻ mức độ nghiêm trọng
- Khả năng lọc các phát hiện bằng tâm trí con người để xác minh/dương tính giả/áp dụng
- Khả năng thực thi các yêu cầu phê duyệt của con người đối với các quy tắc kinh doanh, kiến trúc và các quyết định quan trọng về bảo mật
Đánh giá mã là khi một thay đổi do nhà phát triển viết được người khác xem xét trước khi nó được hợp nhất. Đánh giá tốt; Nó phát hiện lỗi sớm, chia sẻ thông tin và giữ cho cơ sở mã nhất quán. Nhưng việc đánh giá rất mệt mỏi, dễ bị phân tâm và trở nên hời hợt dưới áp lực thời gian. Ở đây, trí tuệ nhân tạo là một trợ lý kép: nó cho phép bạn làm sạch trước mã của chính mình mà bạn gửi để xem xét, vừa kiểm tra PR (yêu cầu kéo) của người khác bằng con mắt sắc bén hơn.
Điểm khác biệt quan trọng là: AI tăng tốc và tăng cường đánh giá, nhưng nó không thể đảm nhận trách nhiệm phê duyệt. Câu "AI nhìn, sạch sẽ" không phải là một sự chứng thực. Quyết định "hợp nhất" cuối cùng tùy thuộc vào kỹ sư biết mã và ngữ cảnh.
Đánh giá về AI tốt và xấu
Tốt cho: Kiểm tra sai, rò rỉ tài nguyên (tệp/liên kết vẫn mở), ngoại lệ chưa được phát hiện, điều kiện rõ ràng là sai (>= thay vì >), đề xuất đổi tên, khả năng đọc, trường hợp cạnh bị thiếu, mùi bảo mật đơn giản (như nối chuỗi SQL), phát hiện mã trùng lặp.
Điểm yếu: Các lỗ hổng sâu vi phạm quy tắc kinh doanh của bạn nhưng yêu cầu ngữ cảnh và thời gian, chẳng hạn như logic đúng về mặt cú pháp, tuân thủ kiến trúc, tắc nghẽn hiệu suất thực, lỗi đồng thời. AI cũng tạo ra kết quả dương tính giả (nhầm lẫn điều gì đó không thực sự là vấn đề với một vấn đề) và kết quả âm tính giả (thiếu lỗi thực sự). Vì vậy, kết quả đầu ra của nó là một “danh sách thận trọng”, không phải là một phán quyết dứt khoát.
Thận trọng: Chỉ vì AI nói "không vấn đề gì" không chứng minh được rằng mã đó đúng. Âm tính giả thì im lặng; Những sai lầm nguy hiểm nhất là những sai lầm không bao giờ được đề cập trong bài đánh giá.
Các bước xem xét có hệ thống
- Đưa ra bối cảnh. Thêm mục đích của thay đổi, vấn đề liên quan và tiêu chí chấp nhận, nếu có, vào lời nhắc. Sự xem xét không có mục đích tạo ra sự giải thích không có mục đích.
- Chia nó thành các loại. Yêu cầu mô hình phân loại các phát hiện là "lỗi/bảo mật/hiệu suất/khả năng đọc/kiểu"; vì vậy bạn tách biệt quan trọng khỏi tiếng ồn.
- Yêu cầu nhãn mức độ nghiêm trọng. Đánh giá mỗi phát hiện là "cao/trung bình/thấp" và bao gồm "nguyên nhân" và "đề nghị khắc phục".
- Hãy lọc nó bằng chính đôi mắt của bạn. Đánh giá từng phát hiện: có thật không (xác minh), có dương tính giả không (viết lời giải thích), có thiếu gì không (bổ sung kiến thức của riêng bạn).
- Xác minh các đường dẫn quan trọng theo cách thủ công. Tự mình đọc và thực hiện các lộ trình liên quan đến tiền, danh tính, ủy quyền và xóa dữ liệu mà không cần dựa vào AI.
Ba hộp nhỏ
Trường hợp 1 - Đã phát hiện lỗi Silent null. Một nhóm đã dùng AI xem trước đoạn PR dài 380 dòng. Mô hình đã gắn cờ một cách mà trong đó phản hồi của dịch vụ bên ngoài có thể là rỗng nhưng không có bước kiểm tra nào được thực hiện đối với điều này trong mã. Người đánh giá đã xác minh đường dẫn này và thêm dấu kiểm rỗng; Một lỗi tương tự đã khiến quá trình sản xuất bị gián đoạn 2 giờ trong quý trước.
Trường hợp 2 - Loại bỏ dương tính giả. AI đã gắn cờ “sự cố hiệu suất có thể xảy ra” trong một vòng lặp. Người đánh giá đã đóng kết quả này là dương tính giả vì biết rằng vòng lặp chỉ hoạt động với tối đa 5 phần tử (nó lặp trên một enum). Người mẫu không biết bối cảnh đã cảnh báo; Người hiểu rõ bối cảnh đã đưa ra quyết định đúng đắn.
Trường hợp 3 - AI bỏ sót lỗi quy tắc kinh doanh. Mặc dù tài khoản giảm giá phải có mức tối đa là 30% theo quy tắc chiến dịch, nhưng mã lại cho phép 50%. AI không bao giờ nhận thấy lỗi logic hoàn hảo về mặt cú pháp này; bởi vì anh ta không biết quy tắc. Lỗi đã được phát hiện trong quá trình đánh giá của chủ sở hữu sản phẩm, người biết tiêu chí chấp nhận. Bài học: xác thực quy tắc kinh doanh là công việc của con người.
Bốn mẫu có thể sao chép
Đánh giá theo mục đích, phân loại:
Vai trò: Người đánh giá mã tỉ mỉ. Mục đích thay đổi: {{Mục đích / vấn đề}}Xem lại điểm khác biệt này. Cung cấp những phát hiện trong các danh mục sau: [Lỗi] [Bảo mật][Hiệu suất] [Khả năng đọc] [Phong cách]. Đối với mỗi phát hiện: tệp:hàng, mức độ nghiêm trọng (cao/trung bình/thấp), nguyên nhân, cách khắc phục được đề xuất. Đánh dấu "có thể" nếu bạn không chắc chắn. Bạn không biết các quy tắc kinh doanh; Hãy hỏi tôi về những địa điểm yêu cầu quy tắc.{{diff}}
Để chuẩn bị xem lại mã của riêng bạn:
Xem lại thay đổi này trước khi mở PR. Hãy tìm: thiếu null/kiểm tra lỗi, rò rỉ tài nguyên, trường hợp cạnh, bí mật, nhánh chưa được kiểm tra. Liệt kê các phát hiện theo thứ tự ưu tiên; đề nghị sửa mỗi dòng 1 dòng.{{code}}
Săn trường hợp cạnh:
Liệt kê các đầu vào và tình huống mà hàm này có thể bị hỏng: trống, rỗng, quá lớn, âm, cuộc gọi đồng thời, lỗi mạng, dữ liệu một phần. Đối với mỗi trường hợp, hãy viết hành vi dự kiến và mã hiện tại sẽ làm gì.{{function}}
Quét mùi bảo mật (sàng lọc trước):
Hãy tìm các dấu hiệu bảo mật phổ biến trong mã này: nối SQL/lệnh, đầu vào không được xác thực, bí mật nhúng không thể thay đổi, giải tuần tự hóa không an toàn, thiếu kiểm tra đặc quyền. Tách các phát hiện thành "chắc chắn / có thể / kiến thức". Đây là buổi sàng lọc sơ bộ; Đây không phải là phán quyết dứt khoát.{{code}}
Dấu nhắc yếu / Dấu nhắc mạnh
Yếu: “Có sai lầm gì trong lần PR này không?”
Mạnh: "Mục đích: thêm chiết khấu phiếu giảm giá vào tổng giỏ hàng (chiết khấu không được quá 30% — bạn không thể tự mình xác minh quy tắc này, chỉ cần cho tôi biết nếu mã áp đặt giới hạn trên). Kiểm tra sự khác biệt; đưa ra kết quả theo danh mục + mức độ nghiêm trọng + đề xuất sửa chữa, đánh dấu 'có thể' nếu không chắc chắn. [khác biệt]"
Phiên bản mạnh nêu rõ mục đích, quy tắc kinh doanh và ranh giới của AI; Do đó, những phát hiện hữu ích xuất hiện và khu vực mà mô hình chưa biết đến vẫn rõ ràng.
Tìm loại
Độ tin cậy của AI
vai trò của đàn ông
Thiếu kiểm tra lỗi/không có
cao
Xác minh và áp dụng
Khả năng đọc/phong cách
cao
Chọn theo sở thích
Mùi an ninh đơn giản
trung bình
Hoàn thiện, quét bằng xe
Tuân thủ quy tắc kinh doanh
thấp
Nó hoàn toàn là con người.
Đồng thời/kiến trúc
thấp
Cần có sự xem xét của chuyên gia
Đánh giá AI không phải là sự thay thế cho đánh giá con người
Định vị đánh giá AI như một “bộ lọc đầu tiên”: một bước vượt qua sơ bộ rẻ tiền, nhanh chóng và không mệt mỏi. Bộ lọc này giải phóng sự chú ý của người đánh giá khỏi các chi tiết không quan trọng (khoảng trắng, tên) và hướng sự chú ý đến những nơi thực sự cần suy nghĩ—quy tắc kinh doanh, kiến trúc, kết quả bảo mật. Nhưng phê duyệt hợp nhất là chữ ký của người chịu trách nhiệm trong nhóm. Việc xem xét độc lập bởi ít nhất một kỹ sư có thẩm quyền là bắt buộc đối với những thay đổi quan trọng về an toàn.
Mẹo: Đọc danh sách các phát hiện mà AI đưa ra dưới dạng “những việc cần kiểm tra” thay vì “việc cần làm”. Hãy xác minh và áp dụng từng mục hoặc viết ra một câu tại sao bạn đã vượt qua nó; dấu vết này làm cho đánh giá có thể kiểm tra được.
Những lỗi thường gặp
- Nó có nghĩa là "AI nhìn, nó sạch sẽ". Đây là một cảm giác tự tin sai lầm vì những tiêu cực sai lầm.
- Không đưa ra bối cảnh. Không có mục đích và tiêu chí chấp nhận, mô hình chỉ tạo ra những diễn giải phong cách hời hợt.
- Áp dụng một cách mù quáng những kết quả dương tính giả. Việc sửa mọi cảnh báo của mô hình có thể làm hỏng mã đang chạy.
- Hỏi người mẫu về quy tắc kinh doanh. Người mẫu không biết quy luật; Việc xác minh nó là tùy thuộc vào con người.
- Đừng phân biệt đối xử với bạo lực. Việc đặt một phát hiện bảo mật quan trọng và gợi ý tên vào cùng một túi sẽ làm lu mờ những gì quan trọng.
Tóm lại
AI là bộ lọc đầu tiên không mệt mỏi trong quá trình đánh giá mã: nó phát hiện các lỗi null/lỗi, các trường hợp khó khăn và khả năng bảo mật đơn giản rất tốt; nhưng nó yếu về các sai sót yêu cầu theo ngữ cảnh như quy tắc kinh doanh, kiến trúc và tính đồng thời, đồng thời tạo ra cả kết quả dương tính giả và âm tính giả. Yêu cầu phát hiện theo danh mục và mức độ nghiêm trọng, lọc từng phát hiện bằng trí thông minh của con người, xác minh thủ công các đường dẫn quan trọng. Phê duyệt luôn là chữ ký của một kỹ sư có trách nhiệm.
Nhiệm vụ ứng dụng
Chọn PR/khác biệt thực tế hoặc gần đây. Đầu tiên, hãy để AI xem xét nó bằng mẫu “đánh giá theo danh mục, theo định hướng khách quan”. Đặt các kết quả phát hiện vào một bảng và quyết định từng kết quả: đúng (tôi đã xác minh), dương tính giả (đây là lý do của tôi) hoặc sẽ được thực hiện. Sau đó, hãy tự mình tham quan và cố gắng tìm ra ít nhất một điều (đặc biệt là một quy tắc kinh doanh hoặc trường hợp nguy hiểm) mà AI còn thiếu và viết nó ra.
danh sách kiểm tra
- [ ] Tôi sử dụng đánh giá AI làm bộ lọc đầu tiên chứ không phải để chứng thực.
- [ ] Tôi thêm mục đích và tiêu chí chấp nhận vào lời nhắc đánh giá.
- [ ] Tôi tách những phát hiện ra khỏi tiếng ồn theo danh mục và thực sự mong muốn chúng.
- [ ] Tôi có ý thức lọc từng phát hiện để xác nhận/dương tính giả/áp dụng.
- [ ] Là một con người, tôi kiểm tra các quy tắc kinh doanh và sự tuân thủ kiến trúc.
- [ ] Tôi yêu cầu sự chấp thuận của kỹ sư có trình độ đối với những thay đổi quan trọng về an toàn.