diff options
author | John Olheiser <john.olheiser@gmail.com> | 2020-04-05 01:20:50 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-05 07:20:50 +0100 |
commit | baadb51445b1d990f72a37b0ef7575f5ed72824a (patch) | |
tree | 192fa25f2dc144bfa5c78adafc9ccd8f92db86bb /vendor/gitea.com/jolheiser/gitea-vet | |
parent | b74d30ae275b4f025f689efca748dd0cbd826b22 (diff) | |
download | gitea-baadb51445b1d990f72a37b0ef7575f5ed72824a.tar.gz gitea-baadb51445b1d990f72a37b0ef7575f5ed72824a.zip |
Add gitea-vet (#10948)
* Add copyright
Signed-off-by: jolheiser <john.olheiser@gmail.com>
* Add gitea-vet and fix non-compliance
Signed-off-by: jolheiser <john.olheiser@gmail.com>
* Combine tools.go into build.go and clean up
Signed-off-by: jolheiser <john.olheiser@gmail.com>
* Remove extra GO111MODULE=on
Signed-off-by: jolheiser <john.olheiser@gmail.com>
Diffstat (limited to 'vendor/gitea.com/jolheiser/gitea-vet')
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/.gitignore | 5 | ||||
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/LICENSE | 19 | ||||
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/Makefile | 7 | ||||
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/README.md | 7 | ||||
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/checks/imports.go | 54 | ||||
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/checks/license.go | 73 | ||||
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/go.mod | 5 | ||||
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/go.sum | 20 | ||||
-rw-r--r-- | vendor/gitea.com/jolheiser/gitea-vet/main.go | 17 |
9 files changed, 207 insertions, 0 deletions
diff --git a/vendor/gitea.com/jolheiser/gitea-vet/.gitignore b/vendor/gitea.com/jolheiser/gitea-vet/.gitignore new file mode 100644 index 0000000000..b89cc42a23 --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/.gitignore @@ -0,0 +1,5 @@ +# GoLand +.idea/ + +# Binaries +/gitea-vet*
\ No newline at end of file diff --git a/vendor/gitea.com/jolheiser/gitea-vet/LICENSE b/vendor/gitea.com/jolheiser/gitea-vet/LICENSE new file mode 100644 index 0000000000..a39c526bbe --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2020 The Gitea Authors + +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.
\ No newline at end of file diff --git a/vendor/gitea.com/jolheiser/gitea-vet/Makefile b/vendor/gitea.com/jolheiser/gitea-vet/Makefile new file mode 100644 index 0000000000..5305662b61 --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/Makefile @@ -0,0 +1,7 @@ +.PHONY: build +build: + go build + +.PHONY: fmt +fmt: + go fmt ./...
\ No newline at end of file diff --git a/vendor/gitea.com/jolheiser/gitea-vet/README.md b/vendor/gitea.com/jolheiser/gitea-vet/README.md new file mode 100644 index 0000000000..5fc03e0ebf --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/README.md @@ -0,0 +1,7 @@ +# gitea-vet +`go vet` tool for Gitea + +| Analyzer | Description | +|----------|---------------------------------------------------------------------| +| Imports | Checks for import sorting. stdlib->code.gitea.io->other | +| License | Checks file headers for some form of `Copyright...YYYY...Gitea/Gogs`| diff --git a/vendor/gitea.com/jolheiser/gitea-vet/checks/imports.go b/vendor/gitea.com/jolheiser/gitea-vet/checks/imports.go new file mode 100644 index 0000000000..6ef5975e2e --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/checks/imports.go @@ -0,0 +1,54 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package checks + +import ( + "strings" + + "golang.org/x/tools/go/analysis" +) + +var Imports = &analysis.Analyzer{ + Name: "imports", + Doc: "check for import order.", + Run: runImports, +} + +func runImports(pass *analysis.Pass) (interface{}, error) { + for _, file := range pass.Files { + level := 0 + for _, im := range file.Imports { + var lvl int + val := im.Path.Value + if importHasPrefix(val, "code.gitea.io") { + lvl = 2 + } else if strings.Contains(val, ".") { + lvl = 3 + } else { + lvl = 1 + } + + if lvl < level { + pass.Reportf(file.Pos(), "Imports are sorted wrong") + break + } + level = lvl + } + } + return nil, nil +} + +func importHasPrefix(s, p string) bool { + return strings.HasPrefix(s, "\""+p) +} + +func sliceHasPrefix(s string, prefixes ...string) bool { + for _, p := range prefixes { + if importHasPrefix(s, p) { + return true + } + } + return false +} diff --git a/vendor/gitea.com/jolheiser/gitea-vet/checks/license.go b/vendor/gitea.com/jolheiser/gitea-vet/checks/license.go new file mode 100644 index 0000000000..83f9e3ca03 --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/checks/license.go @@ -0,0 +1,73 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package checks + +import ( + "regexp" + "strings" + + "golang.org/x/tools/go/analysis" +) + +var ( + header = regexp.MustCompile(`.*Copyright.*\d{4}.*(Gitea|Gogs)`) + goGenerate = "//go:generate" + buildTag = "// +build" +) + +var License = &analysis.Analyzer{ + Name: "license", + Doc: "check for a copyright header.", + Run: runLicense, +} + +func runLicense(pass *analysis.Pass) (interface{}, error) { + for _, file := range pass.Files { + if len(file.Comments) == 0 { + pass.Reportf(file.Pos(), "Copyright not found") + continue + } + + if len(file.Comments[0].List) == 0 { + pass.Reportf(file.Pos(), "Copyright not found or wrong") + continue + } + + commentGroup := 0 + if strings.HasPrefix(file.Comments[0].List[0].Text, goGenerate) { + if len(file.Comments[0].List) > 1 { + pass.Reportf(file.Pos(), "Must be an empty line between the go:generate and the Copyright") + continue + } + commentGroup++ + } + + if strings.HasPrefix(file.Comments[0].List[0].Text, buildTag) { + commentGroup++ + } + + if len(file.Comments) < commentGroup+1 { + pass.Reportf(file.Pos(), "Copyright not found") + continue + } + + if len(file.Comments[commentGroup].List) < 1 { + pass.Reportf(file.Pos(), "Copyright not found or wrong") + continue + } + + var check bool + for _, comment := range file.Comments[commentGroup].List { + if header.MatchString(comment.Text) { + check = true + } + } + + if !check { + pass.Reportf(file.Pos(), "Copyright did not match check") + } + } + return nil, nil +} diff --git a/vendor/gitea.com/jolheiser/gitea-vet/go.mod b/vendor/gitea.com/jolheiser/gitea-vet/go.mod new file mode 100644 index 0000000000..241ed5ca07 --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/go.mod @@ -0,0 +1,5 @@ +module gitea.com/jolheiser/gitea-vet + +go 1.14 + +require golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224 diff --git a/vendor/gitea.com/jolheiser/gitea-vet/go.sum b/vendor/gitea.com/jolheiser/gitea-vet/go.sum new file mode 100644 index 0000000000..5feddd059c --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/go.sum @@ -0,0 +1,20 @@ +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224 h1:azwY/v0y0K4mFHVsg5+UrTgchqALYWpqVo6vL5OmkmI= +golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/vendor/gitea.com/jolheiser/gitea-vet/main.go b/vendor/gitea.com/jolheiser/gitea-vet/main.go new file mode 100644 index 0000000000..9b8b000065 --- /dev/null +++ b/vendor/gitea.com/jolheiser/gitea-vet/main.go @@ -0,0 +1,17 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package main + +import ( + "gitea.com/jolheiser/gitea-vet/checks" + "golang.org/x/tools/go/analysis/unitchecker" +) + +func main() { + unitchecker.Main( + checks.Imports, + checks.License, + ) +} |