Skip to content

ftkit verify

Kiểm tra một repo có đúng chuẩn Fountain hay không.

Cách dùng

bash
ftkit verify

Lệnh cũng có alias là v:

bash
ftkit v

Lệnh không nhận tham số và chạy trên repo service ở thư mục hiện tại.

Lệnh làm gì

verify chạy một bộ 20 bước kiểm tra trên service ở thư mục hiện tại và in ra, cho từng bước, danh sách các mục đạt (), cảnh báo () và lỗi (). Cuối cùng lệnh in một bản tổng kết với tổng số đếm.

20 bước kiểm tra bao gồm, theo thứ tự:

  1. Cấu trúc dự án — các thư mục bắt buộc (server, biz, biz/core, biz/dal), go.mod và một file config.
  2. main.gopackage main, mẫu bootstrap fountain, việc khởi tạo server và lời gọi Serving().
  3. server/server.go — blank import của biz, struct server, NewServer(), các method vòng đời (Initialize, Serving, Destroy, Info) và thứ tự install trong Initialize().
  4. server/route.goinitHTTPHandle, versioning API, route group và tham chiếu handler.
  5. biz/biz.go — blank import cho các domain controller dưới biz/core/*.
  6. Controllers — mỗi domain gọi RegisterCoreController() và hiện thực InstallController() / RegisterCallback(), dùng sync.Once.
  7. Nội dung controller.go — chỉ chứa các hàm liên quan CoreController cùng init() / Get*ControllerInstance().
  8. Handlers — mỗi domain handler có một *_impl.go với hàm khởi tạo New*API() nhận []core.CoreController.
  9. File handler — đặt tên {group}.{operation}_handler.go và đúng một hàm handler mỗi file.
  10. Không có route handler trong *_impl.go — method nhận *fiber.Ctx phải nằm trong *_handler.go.
  11. Tầng DAObiz/dal/dao/managers.go, các hằng số, init() và việc dùng RegisterDAO*, cùng với models.
  12. Quy tắc import DAO — DB DAO so với cache DAO và những gì chúng được phép import (hiện ở mức khuyến nghị).
  13. Quyền sở hữu DAO — mỗi DAO chỉ thuộc một controller và chỉ được tương tác trong một file.
  14. Hậu tố type của DAO — type parameter của GetDAO[...] trong InstallController() phải kết thúc bằng DAO, Cache hoặc STO.
  15. Logging — chỉ cho phép flog; log, slog, logrus, zap, zerolog và fmt.Print* dùng để log đều bị đánh dấu.
  16. Không khai báo data struct — file controller, DAO và handler không được khai báo data struct (chúng thuộc về biz/dal/do).
  17. Lỗi trả về của controller — các hàm exported của controller phải trả về *froto.RpcError, không phải error thuần.
  18. Không có tham số interface{} / any — trong các file controller khác controller.go.
  19. Thư mục pkg/ — và client library (<service>_client/).
  20. Header file Go — báo cáo tỷ lệ phần trăm file có header chuẩn.

Để xem danh sách đầy đủ, dễ đọc về các quy ước mà các bước này thực thi, xem Checklist chuẩn.

Hành vi thoát (exit)

  • Nếu phát hiện bất kỳ lỗi nào, verify in danh sách lỗi có đánh số và thoát với mã khác 0 (exit 1) — hữu ích cho cổng kiểm tra CI.
  • Nếu có cảnh báo nhưng không có lỗi, lệnh báo repo đạt chuẩn nhưng có điểm cần lưu ý và thoát thành công.
  • Nếu không có lỗi và không có cảnh báo, lệnh báo repo hoàn toàn đạt chuẩn.

TIP

Với bước 20 (header), verify gợi ý chạy ftkit header để tự động thêm các header còn thiếu.

verify không có cờ (flag) nào.