Bỏ qua để đến nội dung

Quy tắc phân tích kiến trúc

Mỗi finding có ruleId, category, severity, file, line, evidence và recommendation. Hãy mở file được nêu và xác nhận ý đồ thiết kế trước khi sửa. NKLattice báo tín hiệu tĩnh trong source; công cụ không chứng minh một import hay export có hại.

Rule ID Mức mặc định Tín hiệu và bước review đầu tiên
module-cycle Error Import runtime nội bộ tạo nhóm module liên thông theo hai chiều. Xem hướng phụ thuộc; có thể chuyển contract dùng chung xuống tầng thấp hơn.
high-fan-in Warning Có hơn 8 cạnh import runtime nội bộ đi vào một module. Xem tính ổn định của giao diện trước khi sửa.
high-fan-out Warning Có hơn 10 cạnh import runtime nội bộ đi ra một module. Tìm trách nhiệm không cùng mục đích.
deep-dependency-chain Warning Một chuỗi import runtime nội bộ vượt 6 bước. Xem các tầng trung gian có thực sự tạo ranh giới hữu ích không.
orphan-module Info Module không phải route, trong dự án nhiều module, không có cạnh nội bộ vào hoặc ra đã resolve. Xác nhận nó có phải entry point.
duplicate-import Warning Một module lặp specifier import runtime. Gộp các import nếu cả hai khai báo đều cần.
unused-export Info Giá trị export ở module đang được import không có importer nội bộ đã resolve. Kiểm tra consumer ngoài package và lúc chạy trước khi xóa.
large-component Warning File có component JSX được nhận diện dài hơn 200 dòng. Chỉ tách khi tìm được trách nhiệm mạch lạc.
deep-jsx Warning JSX lồng sâu hơn 6 cấp. Cân nhắc component con có tên khi giúp mã dễ đọc.
high-complexity Warning Độ phức tạp nhánh ước lượng vượt 15. Review các nhánh và tách logic nếu phù hợp.

Đây là mười rule ID, trong đó fan-in và fan-out là hai rule khác nhau. Policy ranh giới do dự án cấu hình tạo finding với ID và mức riêng. Policy kiến trúc giải thích ngưỡng và ranh giới tùy chỉnh.

Scanner lấy file JS/TS dưới gốc được phân tích, resolve khai báo import tĩnh và re-export tới các file khác đã quét. Nếu có, nó dùng tsconfig.json tại gốc này. Package ngoài và file không resolve được không tạo cạnh đồ thị nội bộ. Khai báo import type và export type được loại khỏi chu trình runtime, fan-in/out và kiểm tra ranh giới.

Rule chu trình tìm một nhóm module liên thông; thứ tự module được in không phải đường thực thi chính xác. Fan-in/out đếm cạnh, nên import lặp có thể làm tăng số đếm. Dòng 1 ở finding theo metric toàn file chỉ vị trí file; rule theo import có thể chỉ đúng dòng import.

Độ phức tạp bắt đầu từ 1, rồi tăng với cú pháp như if, vòng lặp, catch, toán tử điều kiện, khối case, && và ||. Đây là phép ước lượng, không phải kiểm toán độ phức tạp đầy đủ.

  • orphan-module có thể là entry point của app/test hoặc file được dùng ngoài import tĩnh nội bộ.
  • unused-export chỉ xem importer nội bộ đã resolve và bỏ qua file route Next app/, pages/ được nhận diện. Nó không nhìn thấy mọi consumer bên ngoài, dynamic import hoặc reflection lúc chạy.
  • Parser không build dự án và không theo mọi biểu thức require() hay import(). Thiếu cạnh đồ thị có thể do mẫu source chưa được hỗ trợ.
  • large-component áp cho toàn file khi có function/biến top-level tên viết hoa chứa JSX; nó không đo riêng thân của một component.

Nếu finding đúng nhưng ngưỡng không hợp với team, hãy chỉnh threshold hoặc policy ranh giới trong .nklattice.json đã review. Đổi trọng số chỉ ảnh hưởng điểm, không ảnh hưởng finding có xuất hiện hay không.