aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/lufeee/execinquery
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/lufeee/execinquery')
-rw-r--r--vendor/github.com/lufeee/execinquery/.gitignore1
-rw-r--r--vendor/github.com/lufeee/execinquery/LICENSE21
-rw-r--r--vendor/github.com/lufeee/execinquery/README.md76
-rw-r--r--vendor/github.com/lufeee/execinquery/execinquery.go135
4 files changed, 0 insertions, 233 deletions
diff --git a/vendor/github.com/lufeee/execinquery/.gitignore b/vendor/github.com/lufeee/execinquery/.gitignore
deleted file mode 100644
index 00e1abc31..000000000
--- a/vendor/github.com/lufeee/execinquery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-execinquery
diff --git a/vendor/github.com/lufeee/execinquery/LICENSE b/vendor/github.com/lufeee/execinquery/LICENSE
deleted file mode 100644
index b6ab14aec..000000000
--- a/vendor/github.com/lufeee/execinquery/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2022 lufe
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/lufeee/execinquery/README.md b/vendor/github.com/lufeee/execinquery/README.md
deleted file mode 100644
index 38fa7c8b9..000000000
--- a/vendor/github.com/lufeee/execinquery/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# execinquery - a simple query string checker in Query function
-[![Go Matrix](https://github.com/lufeee/execinquery/actions/workflows/go-cross.yml/badge.svg?branch=main)](https://github.com/lufeee/execinquery/actions/workflows/go-cross.yml)
-[![Go lint](https://github.com/lufeee/execinquery/actions/workflows/lint.yml/badge.svg?branch=main)](https://github.com/lufeee/execinquery/actions/workflows/lint.yml)
-[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
-## About
-
-execinquery is a linter about query string checker in Query function which reads your Go src files and
-warnings it finds.
-
-## Installation
-
-```sh
-go install github.com/lufeee/execinquery/cmd/execinquery
-```
-
-## Usage
-```go
-package main
-
-import (
- "database/sql"
- "log"
-)
-
-func main() {
- db, err := sql.Open("mysql", "test:test@tcp(test:3306)/test")
- if err != nil {
- log.Fatal("Database Connect Error: ", err)
- }
- defer db.Close()
-
- test := "a"
- _, err = db.Query("Update * FROM hoge where id = ?", test)
- if err != nil {
- log.Fatal("Query Error: ", err)
- }
-
-}
-```
-
-```console
-go vet -vettool=$(which execinquery) ./...
-
-# command-line-arguments
-./a.go:16:11: Use Exec instead of Query to execute `UPDATE` query
-```
-
-## CI
-
-### CircleCI
-
-```yaml
-- run:
- name: install execinquery
- command: go install github.com/lufeee/execinquery
-
-- run:
- name: run execinquery
- command: go vet -vettool=`which execinquery` ./...
-```
-
-### GitHub Actions
-
-```yaml
-- name: install execinquery
- run: go install github.com/lufeee/execinquery
-
-- name: run execinquery
- run: go vet -vettool=`which execinquery` ./...
-```
-
-### License
-
-MIT license.
-
-<hr>
diff --git a/vendor/github.com/lufeee/execinquery/execinquery.go b/vendor/github.com/lufeee/execinquery/execinquery.go
deleted file mode 100644
index c37dc1701..000000000
--- a/vendor/github.com/lufeee/execinquery/execinquery.go
+++ /dev/null
@@ -1,135 +0,0 @@
-package execinquery
-
-import (
- "go/ast"
- "regexp"
- "strings"
-
- "golang.org/x/tools/go/analysis"
- "golang.org/x/tools/go/analysis/passes/inspect"
- "golang.org/x/tools/go/ast/inspector"
-)
-
-const doc = "execinquery is a linter about query string checker in Query function which reads your Go src files and warning it finds"
-
-// Analyzer is checking database/sql pkg Query's function
-var Analyzer = &analysis.Analyzer{
- Name: "execinquery",
- Doc: doc,
- Run: newLinter().run,
- Requires: []*analysis.Analyzer{
- inspect.Analyzer,
- },
-}
-
-type linter struct {
- commentExp *regexp.Regexp
- multilineCommentExp *regexp.Regexp
-}
-
-func newLinter() *linter {
- return &linter{
- commentExp: regexp.MustCompile(`--[^\n]*\n`),
- multilineCommentExp: regexp.MustCompile(`(?s)/\*.*?\*/`),
- }
-}
-
-func (l linter) run(pass *analysis.Pass) (interface{}, error) {
- result := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector)
-
- nodeFilter := []ast.Node{
- (*ast.CallExpr)(nil),
- }
-
- result.Preorder(nodeFilter, func(n ast.Node) {
- switch n := n.(type) {
- case *ast.CallExpr:
- selector, ok := n.Fun.(*ast.SelectorExpr)
- if !ok {
- return
- }
-
- if pass.TypesInfo == nil || pass.TypesInfo.Uses[selector.Sel] == nil || pass.TypesInfo.Uses[selector.Sel].Pkg() == nil {
- return
- }
-
- if "database/sql" != pass.TypesInfo.Uses[selector.Sel].Pkg().Path() {
- return
- }
-
- if !strings.Contains(selector.Sel.Name, "Query") {
- return
- }
-
- replacement := "Exec"
- var i int // the index of the query argument
- if strings.Contains(selector.Sel.Name, "Context") {
- replacement += "Context"
- i = 1
- }
-
- if len(n.Args) <= i {
- return
- }
-
- query := l.getQueryString(n.Args[i])
- if query == "" {
- return
- }
-
- query = strings.TrimSpace(l.cleanValue(query))
- parts := strings.SplitN(query, " ", 2)
- cmd := strings.ToUpper(parts[0])
-
- if strings.HasPrefix(cmd, "SELECT") {
- return
- }
-
- pass.Reportf(n.Fun.Pos(), "Use %s instead of %s to execute `%s` query", replacement, selector.Sel.Name, cmd)
- }
- })
-
- return nil, nil
-}
-
-func (l linter) cleanValue(s string) string {
- v := strings.NewReplacer(`"`, "", "`", "").Replace(s)
-
- v = l.multilineCommentExp.ReplaceAllString(v, "")
-
- return l.commentExp.ReplaceAllString(v, "")
-}
-
-func (l linter) getQueryString(exp interface{}) string {
- switch e := exp.(type) {
- case *ast.AssignStmt:
- var v string
- for _, stmt := range e.Rhs {
- v += l.cleanValue(l.getQueryString(stmt))
- }
- return v
-
- case *ast.BasicLit:
- return e.Value
-
- case *ast.ValueSpec:
- var v string
- for _, value := range e.Values {
- v += l.cleanValue(l.getQueryString(value))
- }
- return v
-
- case *ast.Ident:
- if e.Obj == nil {
- return ""
- }
- return l.getQueryString(e.Obj.Decl)
-
- case *ast.BinaryExpr:
- v := l.cleanValue(l.getQueryString(e.X))
- v += l.cleanValue(l.getQueryString(e.Y))
- return v
- }
-
- return ""
-}