123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // 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
- }
|