Claude Skill MartKhám phá skillCâu dùng ngayHọc qua videoDùng terminalSkill là gì?
Về danh sách

Bộ phân tích trạng thái trừu tượng

Skill phân tích tĩnh dùng diễn giải trừu tượng để suy ra miền giá trị biến và phát hiện lỗi runtime tiềm ẩn như truy cập ngoài mảng, null, chia cho 0, tràn số nguyên — mà không chạy chương trình.

Bảo mật · ReviewNâng cao23622Điểm AI 7/10Cập nhật lần cuối: 21 thg 8, 2026

Skill này làm gì

  • Phân tích mã nguồn bằng diễn giải trừu tượng (abstract interpretation), suy ra các giá trị mà biến có thể nhận tại từng điểm trong chương trình mà không cần thực thi.
  • Chọn miền trừu tượng phù hợp: miền khoảng (Interval) cho phạm vi số, miền dấu (Sign), miền null (null / not-null / maybe-null), miền kiểu (Type) hoặc kết hợp nhiều miền.
  • Tách trạng thái theo nhánh điều kiện, hợp trạng thái tại điểm giao, lặp vòng lặp tới điểm bất động (fixpoint) và áp dụng widening khi không hội tụ.
  • Kiểm tra vi phạm tại từng phép toán: vượt biên mảng, truy cập null, chia cho 0, tràn số nguyên, sai kiểu.
  • Báo cáo theo cấu trúc: vị trí, loại lỗi, trạng thái trừu tượng, mức nghiêm trọng (chắc chắn / tiềm ẩn), giải thích và gợi ý sửa.
  • Có mục lưu ý riêng cho C/C++, Python, Java, JavaScript (số học con trỏ, kiểu động, NPE, ép kiểu ngầm).

Phù hợp với ai

  • Lập trình viên muốn lọc trước nguy cơ crash trước khi release hoặc trong lúc review code.
  • Người bảo trì mã legacy có ít test, cần đánh giá độ an toàn của hàm.
  • Sinh viên / người học phân tích chương trình muốn thực hành khái niệm abstract interpretation.
  • Reviewer bảo mật kiểm tra an toàn bộ nhớ và giá trị (buffer overrun, null dereference).

Ví dụ sử dụng

  1. Kiểm tra biên mảng: đưa hàm find_max(arr, n), skill chỉ ra rằng nếu n > len(arr) thì arr[i] vượt biên và đề xuất thêm tiền điều kiện n <= len(arr).
  2. Phát hiện chia cho 0: nếu mẫu số được suy ra thuộc [-5, 5] thì 0 nằm trong miền → cảnh báo lỗi tiềm ẩn.
  3. Kiểm tra null: tìm đường đi mà tham số ở trạng thái maybe-null nhưng vẫn truy cập ptr.field, kèm gợi ý vị trí thêm kiểm tra null.
  4. Dự đoán tràn số: với a, b đều thuộc [1000, 2000], phép nhân có thể tràn int32.

· · · Hướng dẫn cài đặt · · ·

Dùng thử ngay, không cần cài

Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.

Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình:
https://raw.githubusercontent.com/ArabelaTso/Skills-4-SE/HEAD/skills/abstract-state-analyzer/SKILL.md

Mình muốn: (viết việc bạn cần ở đây)

Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.

Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.

Cài vào ứng dụng Claude (không cần terminal)
  1. Tải tệp ZIP bằng nút bên dưới.
  2. Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
  3. Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Tải ZIP
Cài vào Claude Code

Để Claude làm — dán câu dưới đây vào Claude Code

Hãy cài skill mình tìm thấy trên Claude Skill Mart.
Copy thư mục skills/abstract-state-analyzer từ repo GitHub ArabelaTso/Skills-4-SE vào ~/.claude/skills/abstract-state-analyzer/ của mình.
Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.

Cài bằng lệnh thủ công

git clone https://github.com/ArabelaTso/Skills-4-SE.git && mkdir -p ~/.claude/skills && cp -r Skills-4-SE/skills/abstract-state-analyzer ~/.claude/skills/

Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.

  1. Mở terminal (macOS/Linux dùng Terminal; Windows dùng WSL hoặc Git Bash).
  2. Clone repository về máy:
    git clone https://github.com/ArabelaTso/Skills-4-SE.git
    
  3. Tạo thư mục skill của Claude Code nếu chưa có:
    mkdir -p ~/.claude/skills
    
  4. Copy toàn bộ thư mục skill (copy cả thư mục để giữ các tệp trong references/):
    cp -r Skills-4-SE/skills/abstract-state-analyzer ~/.claude/skills/
    
  5. Kiểm tra đã cài đặt:
    ls ~/.claude/skills/abstract-state-analyzer
    
  6. Khởi động lại Claude Code và yêu cầu: "Hãy phân tích trừu tượng hàm này để tìm lỗi runtime tiềm ẩn".
  7. Nên gửi kèm đường dẫn tệp hoặc đoạn mã cụ thể để kết quả chính xác hơn.
Xem mã nguồn trên GitHubGiấy phép: Apache-2.0