From 435397de49adc9740bc67416166aba4d0be8ae2a Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Tue, 24 Oct 2023 07:34:00 +0200 Subject: feat: Add cmds --- cmd/cvet/check_query.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 cmd/cvet/check_query.go (limited to 'cmd/cvet/check_query.go') diff --git a/cmd/cvet/check_query.go b/cmd/cvet/check_query.go new file mode 100644 index 0000000..bde3b9f --- /dev/null +++ b/cmd/cvet/check_query.go @@ -0,0 +1,25 @@ +package main + +import ( + "go/ast" + "strings" + + "golang.org/x/tools/go/analysis" +) + +func isQueryFunc(node *ast.FuncDecl) bool { + return strings.HasSuffix(node.Name.Name, "Query") +} + +func checkQueryFunc(pass *analysis.Pass, node *ast.FuncDecl) { + if node.Type.Results.NumFields() != 3 { + pass.Reportf(node.Pos(), "query function must have 3 return values") + } else { + if !isIdent(node.Type.Results.List[1].Type, "int") { + pass.Reportf(node.Pos(), "query function must return an int code as the second return value") + } + if !isIdent(node.Type.Results.List[2].Type, "error") { + pass.Reportf(node.Pos(), "query function must return an error as the third return value") + } + } +} -- cgit v1.3