2017-11-27 04:48:07 +02:00
|
|
|
package defaultrule
|
|
|
|
|
|
|
|
import (
|
2017-11-27 04:58:15 +02:00
|
|
|
"go/ast"
|
2017-11-27 04:48:07 +02:00
|
|
|
"strings"
|
|
|
|
|
|
|
|
"github.com/mgechev/revive/file"
|
|
|
|
)
|
|
|
|
|
2017-11-27 04:58:15 +02:00
|
|
|
const styleGuideBase = "https://golang.org/wiki/CodeReviewComments"
|
|
|
|
|
|
|
|
// isBlank returns whether id is the blank identifier "_".
|
|
|
|
// If id == nil, the answer is false.
|
|
|
|
func isBlank(id *ast.Ident) bool { return id != nil && id.Name == "_" }
|
|
|
|
|
2017-11-27 04:48:07 +02:00
|
|
|
func isTest(f *file.File) bool {
|
|
|
|
return strings.HasSuffix(f.Name, "_test.go")
|
|
|
|
}
|
2017-11-27 05:19:41 +02:00
|
|
|
|
|
|
|
var commonMethods = map[string]bool{
|
|
|
|
"Error": true,
|
|
|
|
"Read": true,
|
|
|
|
"ServeHTTP": true,
|
|
|
|
"String": true,
|
|
|
|
"Write": true,
|
|
|
|
}
|
|
|
|
|
|
|
|
func receiverType(fn *ast.FuncDecl) string {
|
|
|
|
switch e := fn.Recv.List[0].Type.(type) {
|
|
|
|
case *ast.Ident:
|
|
|
|
return e.Name
|
|
|
|
case *ast.StarExpr:
|
|
|
|
if id, ok := e.X.(*ast.Ident); ok {
|
|
|
|
return id.Name
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// The parser accepts much more than just the legal forms.
|
|
|
|
return "invalid-type"
|
|
|
|
}
|