ftkit verify
Kiểm tra một repo có đúng chuẩn Fountain hay không.
Cách dùng
bash
ftkit verifyLệnh cũng có alias là v:
bash
ftkit vLệ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ự:
- Cấu trúc dự án — các thư mục bắt buộc (
server,biz,biz/core,biz/dal),go.modvà một file config. main.go—package main, mẫu bootstrap fountain, việc khởi tạo server và lời gọiServing().server/server.go— blank import củabiz, structserver,NewServer(), các method vòng đời (Initialize,Serving,Destroy,Info) và thứ tự install trongInitialize().server/route.go—initHTTPHandle, versioning API, route group và tham chiếu handler.biz/biz.go— blank import cho các domain controller dướibiz/core/*.- Controllers — mỗi domain gọi
RegisterCoreController()và hiện thựcInstallController()/RegisterCallback(), dùngsync.Once. - Nội dung
controller.go— chỉ chứa các hàm liên quanCoreControllercùnginit()/Get*ControllerInstance(). - Handlers — mỗi domain handler có một
*_impl.govới hàm khởi tạoNew*API()nhận[]core.CoreController. - File handler — đặt tên
{group}.{operation}_handler.govà đúng một hàm handler mỗi file. - Không có route handler trong
*_impl.go— method nhận*fiber.Ctxphải nằm trong*_handler.go. - Tầng DAO —
biz/dal/dao/managers.go, các hằng số,init()và việc dùngRegisterDAO*, cùng với models. - 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ị).
- 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.
- Hậu tố type của DAO — type parameter của
GetDAO[...]trongInstallController()phải kết thúc bằngDAO,CachehoặcSTO. - Logging — chỉ cho phép
flog;log,slog, logrus, zap, zerolog vàfmt.Print*dùng để log đều bị đánh dấu. - 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). - Lỗi trả về của controller — các hàm exported của controller phải trả về
*froto.RpcError, không phảierrorthuần. - Không có tham số
interface{}/any— trong các file controller kháccontroller.go. - Thư mục
pkg/— và client library (<service>_client/). - 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,
verifyin 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.