> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudthinker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Phát hiện pull request rủi ro bằng Review

> Xem Review đánh dấu một pull request sẽ làm hỏng production, chất vấn các phát hiện và đưa bản sửa vào trước khi thay đổi được merge.

Một pull request trông nhỏ, nhưng sẽ làm hỏng bản phát hành đang chạy ngay khi được deploy. Bài hướng dẫn này cho thấy Review bắt được lỗi đó ra sao, bạn kiểm tra phát hiện thế nào, và bản sửa được đưa vào trước khi có ai merge.

## Tình huống

Một developer mở pull request đổi tên cột `orders.status` thành `orders.state` và cập nhật mã mới cho khớp. Test đều pass. Phiên bản đang chạy trên production vẫn đọc `orders.status`, nên trong quá trình rollout, mọi lượt checkout trên các pod cũ sẽ thất bại. Cùng pull request đó còn thêm một endpoint admin nhưng thiếu bước kiểm tra quyền dùng chung mà các handler khác của bạn đều dùng.

## Điều kiện tiên quyết

* Review đã được thiết lập trên repository, với một Git provider đã kết nối như GitHub, GitLab hoặc Bitbucket. Xem [Thiết lập Review](https://docs.cloudthinker.io/vi/guide/code-review/setup.md).
* Tùy chọn: một tệp `CONVENTIONS.md` hoặc `AGENTS.md` trong repository, để Review biết các quy ước của nhóm bạn. Xem [Review đọc những gì](https://docs.cloudthinker.io/vi/guide/code-review/overview.md#review-đọc-những-gì).

## Hướng dẫn từng bước

**1. Mở pull request**

Mở pull request như bình thường và đánh dấu sẵn sàng để review. Review bỏ qua bản nháp cho đến khi bản nháp sẵn sàng. Không ai cần khởi động Review.

**Bạn sẽ thấy:** khi lượt review hoàn tất, `@cloudthinker-ai` đăng một bình luận tóm tắt trên pull request, cùng các bình luận inline trên những dòng bị đánh dấu.

**2. Đọc các phát hiện**

Migration nhận một phát hiện mức High trong nhóm deploy, migration và tương thích ngược: bản phát hành cũ vẫn đọc `orders.status`. Endpoint mới nhận một phát hiện Security vì thiếu kiểm tra quyền. Mỗi phát hiện đi kèm một bản sửa đề xuất.

**Bạn sẽ thấy:** verdict **Changes requested**, vì còn ít nhất một phát hiện Critical hoặc High chưa được giải quyết. Quy tắc nhánh của provider vẫn quyết định pull request có được merge hay không.

**3. Mở review trong CloudThinker**

Vào **Review → Reviews**. Pull request nằm ở tab **Needs attention**. Mở pull request, đọc **Walkthrough** trên tab **Overview**, rồi xem các thẻ trên tab **Findings**.

**4. Chất vấn phát hiện rủi ro nhất**

Trả lời trong luồng thảo luận của phát hiện về migration trên pull request:

```text theme={null}
@cloudthinker-ai Which code in the current release reads orders.status, and what is a safe order to ship this rename?
```

**Bạn sẽ thấy:** câu trả lời nêu tên các tệp vẫn đọc cột đó và đề xuất một trình tự, chẳng hạn thêm cột mới trước rồi xóa cột cũ ở bản phát hành sau.

**5. Phản biện khi mã được viết có chủ đích**

Nếu một phát hiện sai, hãy trả lời trong luồng thảo luận của phát hiện đó kèm lý do. Không cần mention:

```text theme={null}
This endpoint is only reachable from the internal network, and the gateway enforces admin access.
```

CloudThinker kiểm tra lại phát hiện dựa trên mã và câu trả lời của bạn, rồi rút lại phát hiện, ghi nhận phát hiện, hoặc giữ phát hiện mở và giải thích lý do. Xem [Phản biện một phát hiện](https://docs.cloudthinker.io/vi/guide/code-review/mention-commands.md#phản-bác-một-phát-hiện).

**6. Đưa bản sửa vào**

Trên thẻ phát hiện trong CloudThinker, nhấn **Apply fix** để commit thay đổi đề xuất, hoặc **Copy prompt** để giao cho coding agent của riêng bạn. Trên GitHub hoặc GitLab, nếu muốn review các bản sửa trong một pull request riêng trước, hãy bình luận:

```text theme={null}
@cloudthinker-ai autofix stacked
```

**Fix all findings** ở phần đầu review commit mọi bản sửa vào nhánh nguồn cùng lúc. Cú nhấn của bạn chính là phê duyệt: commit sửa lỗi từ **Apply fix** và **Fix all findings** không đi qua [Approvals](https://docs.cloudthinker.io/vi/guide/approvals/overview.md).

**7. Push và nhận lượt review lại**

Push các thay đổi của bạn. Review chỉ đọc các commit mới và kiểm tra xem các phát hiện trước đó đã được sửa chưa.

**Bạn sẽ thấy:** các phát hiện đã sửa chuyển sang **Resolved**, và verdict chuyển thành **Approved** khi không còn phát hiện nào chưa giải quyết. Pull request chuyển sang tab **Ready to merge**.

## Điều gì giúp cách làm này hiệu quả

* **Review đọc vượt ra ngoài diff.** Review so sánh thay đổi với mã mà bản phát hành đang chạy vẫn dùng, điều mà test chỉ chạy trên mã mới không thể cho thấy. Xem [Review kiểm tra những gì](https://docs.cloudthinker.io/vi/guide/code-review/overview.md#review-kiểm-tra-những-gì).
* **Quy ước đặt ra chuẩn mực.** Kiểm tra quyền dùng chung là mẫu mà repository của bạn vốn đã tuân theo, nên handler bỏ qua bước này sẽ lộ ra ngay.
* **Bạn có thể tranh luận với Review.** [Lệnh mention](https://docs.cloudthinker.io/vi/guide/code-review/mention-commands.md) cho phép bạn hỏi lý do, phản biện và yêu cầu kiểm tra lại ngay trong cùng một luồng thảo luận.
* **Bình chọn định hình các lượt review sau.** Một thumbs-down kèm ghi chú trên phát hiện sai giúp các lượt review sau của repository không nêu lại phát hiện đó trên mã không thay đổi. Xem [Review workspace](https://docs.cloudthinker.io/vi/guide/code-review/review-workspace.md#xử-lý-các-phát-hiện).

## Bước tiếp theo

> **[Review workspace](https://docs.cloudthinker.io/vi/guide/code-review/review-workspace.md)**
>
> Phân loại review, xử lý phát hiện và merge ngay từ CloudThinker.

> **[Lệnh mention](https://docs.cloudthinker.io/vi/guide/code-review/mention-commands.md)**
>
> Mọi lệnh `@cloudthinker-ai` và provider nào hỗ trợ từng lệnh.

> **[Learnings](https://docs.cloudthinker.io/vi/guide/code-review/convention-rules.md)**
>
> Biến các phát hiện đã giải quyết thành mẫu mà các lượt review sau áp dụng.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.