Graphify C# – Công cụ tìm nơi sử dụng mã chính xác theo trình biên dịch dành cho AI lập trình

Công nghệ12 tháng 9, 2026·6 phút đọc

Graphify C# là công cụ mã nguồn mở miễn phí dùng Roslyn/MSBuild để trích xuất quan hệ ngữ nghĩa chính xác trong mã C#, giúp các AI lập trình hiểu đúng lời gọi hàm, kế thừa và ghi đè thay vì chỉ dò tìm văn bản. Công cụ chạy không cần IDE, không cần DLL đã biên dịch, hỗ trợ .NET 10 và .NET 11, được cấp phép MIT.

Graphify C# – Công cụ tìm nơi sử dụng mã chính xác theo trình biên dịch dành cho AI lập trình

Graphify C# – Khi AI lập trình cần bằng chứng ngữ nghĩa thay vì dò tìm văn bản

Các trợ lý lập trình AI đang ngày càng phổ biến, nhưng chúng thường gặp khó khăn khi phải hiểu cấu trúc thật sự của một dự án C# lớn. Một công cụ mới mang tên Graphify C# vừa được giới thiệu trên Hacker News, hứa hẹn mang đến khả năng tìm nơi sử dụng (Find Usages) chính xác như trình biên dịch cho các tác nhân lập trình.

Giấy phép MITGiấy phép MIT

Vấn đề: AI lập trình đang đoán mò cấu trúc mã

Hãy tưởng tượng bạn hỏi trợ lý AI: "Phương thức nào chỉ được dùng bởi các bài kiểm thử?"

Cách tìm kiếm văn bản thông thường chỉ có thể tìm ra các tên khớp nhau về mặt ký tự. Nó không thể xác định chắc chắn phiên bản nạp chồng (overload) nào được gọi, lời gọi thuộc dự án nào, hay một triển khai giao diện có đúng là ký hiệu bạn đang tìm hay không.

Đây chính là điểm yếu cố hữu khiến các tác nhân lập trình AI đưa ra câu trả lời sai lệch trong những dự án C# phức tạp.

Giải pháp: Bằng chứng ngữ nghĩa từ Roslyn

Graphify C# là một công cụ chỉ mục (indexer) Roslyn/MSBuild chạy không cần giao diện đồ họa, biến mã nguồn C# thành dữ liệu ngữ nghĩa có thể truy vấn được. Công cụ này trích xuất các quan hệ đã được trình biên dịch phân giải, bao gồm:

  • Lời gọi hàm (callers) và tham chiếu (references)
  • Quan hệ triển khai giao diện (implements)
  • Quan hệ kế thừa (inherits)
  • Ghi đè phương thức (overrides)

Tất cả đều hoạt động chính xác ngay cả khi có nạp chồng, genericnhiều dự án cùng tham gia.

Công cụ này giống như phần điều hướng ngữ nghĩa của Rider/ReSharper, nhưng được xuất ra dưới dạng mà Codex, Claude Code và các tác nhân lập trình khác có thể đọc hiểu.

So sánh: Không có chỉ mục ngữ nghĩa và có Graphify C#

Không có chỉ mục ngữ nghĩaVới Graphify C#
Tên khớp nhau trông giống như đang được dùngRoslyn phân giải chính xác khai báo
Nạp chồng và generic gây nhầm lẫnChữ ký ràng buộc và danh tính dự án/TFM được giữ lại
Muốn biết chỉ dùng trong kiểm thử phải kiểm tra thủ côngMỗi lời gọi đều kèm dự án, không gian tên và vị trí nguồn
Quan hệ kiểu được tái dựng từ văn bảninherits, implementsoverrides là các cạnh tường minh

Ví dụ, kho mã này có một phương thức nội bộ DeclarationCatalogBuilder.ForTesting(...). Từ đồ thị đã trích xuất, tác nhân AI có thể thấy một lời gọi đã được trình biên dịch phân giải:

Graphify.CSharp.Roslyn.DeclarationCatalogBuilder.ForTesting(...)
└── called by Graphify.CSharp.Tests.Roslyn.CSharp14FeatureTests
    at tests/Graphify.CSharp.Tests/Roslyn/CSharp14FeatureTests.cs:143

Đây là bằng chứng ngữ nghĩa, không phải số lần khớp văn bản đơn thuần.

Bắt đầu nhanh chóng

Bước 1 – Cài đặt

dotnet tool install --global Graphify.CSharp --framework net10.0

Bước 2 – Đánh chỉ mục mã nguồn của bạn

graphify-csharp \
    --input ./src/MyProduct.sln \
    --root . \
    --configuration Release \
    --output ./graphify-out/csharp.json

Kết quả là một tài liệu JSON hoàn chỉnh chứa các nút, cạnh và siêu cạnh. Tác nhân AI có thể đọc trực tiếp, truy vấn bằng jq, hoặc xử lý từ mã của chính bạn.

Trạng thái CITrạng thái CI

Bước 3 – Dạy tác nhân AI sử dụng công cụ

Kho mã đi kèm một kỹ năng (skill) giúp tác nhân AI biết khi nào cần làm mới chỉ mục và cách theo dõi các cạnh ngữ nghĩa:

mkdir -p .agents/skills/graphify-csharp
curl -fsSL \
  https://raw.githubusercontent.com/zachsaw/graphify-csharp/main/.agents/skills/graphify-csharp/SKILL.md \
  -o .agents/skills/graphify-csharp/SKILL.md

Với Claude Code, hãy dùng .claude/skills/graphify-csharp/SKILL.md thay thế.

Những gì được đánh chỉ mục

Khai báo trong mã nguồn:

  • Không gian tên, lớp, cấu trúc, giao diện, bản ghi (record), liệt kê và ủy nhiệm
  • Hàm khởi tạo, phương thức, toán tử và hàm cục bộ
  • Thuộc tính, chỉ mục, trường, thành viên liệt kê và sự kiện
  • Tham số, biến cục bộ, tham số kiểu, bí danh, nhãn và biến vùng truy vấn

Quan hệ được trình biên dịch phân giải:

  • Lời gọi trực tiếp, lời gọi hàm khởi tạo, nhóm phương thức và truy cập thành viên
  • Tham chiếu đến trường, kiểu, thuộc tính, generic, typeof và tiêu đề khai báo
  • inherits, implementsoverrides
  • Toán tử, chuyển đổi, giải cấu trúc, foreach, await, using, mẫu (pattern), phạm vi và biểu thức tập hợp do trình biên dịch chọn
  • Đối số lời gọi và hàm khởi tạo ràng buộc với tham số hình thức trong mã nguồn

Mọi cạnh đều trỏ từ khai báo nơi quan hệ được quan sát đến khai báo mà Roslyn đã phân giải.

Giữ chỉ mục luôn "nóng"

Với công việc lặp đi lặp lại của tác nhân AI, bạn có thể khởi động trình theo dõi:

graphify-csharp \
    --input ./src/MyProduct.sln \
    --root . \
    --configuration Release \
    --output ./graphify-out/csharp.json \
    --watch

Trình theo dõi giữ không gian làm việc Roslyn luôn nóng và chuẩn bị các dự án đã thay đổi trong nền. Nếu không có trình theo dõi nào đang chạy, cùng câu lệnh đó sẽ thực hiện làm mới một lần.

Hỗ trợ runtime và ngôn ngữ

Gói công cụ chứa hai tài nguyên:

Tài nguyên công cụRuntimeBề mặt trình biên dịch
net10.0.NET 10Roslyn 5.9 / C# 14
net11.0.NET 11Roslyn SDK .NET 11 / C# 15 (bản xem trước)

Giới hạn của phân tích tĩnh

Graphify C# chỉ báo cáo những gì Roslyn có thể quan sát tĩnh. Các cơ chế như phản chiếu (reflection), tiêm phụ thuộc, gọi lại gốc, gọi động và mã không có trong bản biên dịch được nạp có thể tạo ra các quan hệ runtime không được biểu diễn dưới dạng cạnh trực tiếp.

Do đó:

  • Không có tham chiếu vào nghĩa là không có tham chiếu tĩnh nào được quan sát
  • Kết quả "chỉ dùng trong kiểm thử" phụ thuộc vào cách phân loại dự án hoặc không gian tên của bạn
  • Mọi ứng viên xóa mã vẫn cần con người đánh giá

Công cụ này thể hiện rõ ranh giới đó thay vì giả vờ rằng bằng chứng tĩnh là bằng chứng về khả năng tiếp cận khi chạy.

Ý nghĩa với cộng đồng lập trình viên Việt Nam

Với các nhóm phát triển C#/.NET tại Việt Nam — đặc biệt trong lĩnh vực gia công phần mềm và sản phẩm doanh nghiệp — việc tích hợp các tác nhân AI vào quy trình làm việc đang trở thành xu hướng tất yếu. Một công cụ như Graphify C# giúp giải quyết bài toán then chốt: làm sao để AI hiểu đúng cấu trúc mã nguồn thay vì chỉ đoán dựa trên văn bản.

Phiên bản NuGetPhiên bản NuGet

Công cụ được cấp phép MIT, hoàn toàn miễn phí, không yêu cầu IDE, không cần DLL dự án đã biên dịch và không cần cơ sở dữ liệu. Đây là một lựa chọn đáng cân nhắc cho các nhóm đang tìm cách nâng cao độ chính xác của trợ lý lập trình AI trong các dự án .NET quy mô lớn.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗