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.
Các quy tắc tích hợp hiện có
Phần tiêu đề “Các quy tắc tích hợp hiện có”| 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.
Bằng chứng được tính như thế nào?
Phần tiêu đề “Bằng chứng được tính như thế nào?”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 đủ.
Nơi dễ báo sai
Phần tiêu đề “Nơi dễ báo sai”orphan-modulecó thể là entry point của app/test hoặc file được dùng ngoài import tĩnh nội bộ.unused-exportchỉ xem importer nội bộ đã resolve và bỏ qua file route Nextapp/,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()hayimport(). 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.