Major rewrite
* use dep for vendoring * lets encrypt * moved web to transfer.sh-web repo * single command install * added first tests
This commit is contained in:
81
vendor/github.com/golang/gddo/doc/vet.go
generated
vendored
Normal file
81
vendor/github.com/golang/gddo/doc/vet.go
generated
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
// Copyright 2013 The Go Authors. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file or at
|
||||
// https://developers.google.com/open-source/licenses/bsd.
|
||||
|
||||
package doc
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/token"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/golang/gddo/gosrc"
|
||||
)
|
||||
|
||||
// This list of deprecated exports is used to find code that has not been
|
||||
// updated for Go 1.
|
||||
var deprecatedExports = map[string][]string{
|
||||
`"bytes"`: {"Add"},
|
||||
`"crypto/aes"`: {"Cipher"},
|
||||
`"crypto/hmac"`: {"NewSHA1", "NewSHA256"},
|
||||
`"crypto/rand"`: {"Seed"},
|
||||
`"encoding/json"`: {"MarshalForHTML"},
|
||||
`"encoding/xml"`: {"Marshaler", "NewParser", "Parser"},
|
||||
`"html"`: {"NewTokenizer", "Parse"},
|
||||
`"image"`: {"Color", "NRGBAColor", "RGBAColor"},
|
||||
`"io"`: {"Copyn"},
|
||||
`"log"`: {"Exitf"},
|
||||
`"math"`: {"Fabs", "Fmax", "Fmod"},
|
||||
`"os"`: {"Envs", "Error", "Getenverror", "NewError", "Time", "UnixSignal", "Wait"},
|
||||
`"reflect"`: {"MapValue", "Typeof"},
|
||||
`"runtime"`: {"UpdateMemStats"},
|
||||
`"strconv"`: {"Atob", "Atof32", "Atof64", "AtofN", "Atoi64", "Atoui", "Atoui64", "Btoui64", "Ftoa64", "Itoa64", "Uitoa", "Uitoa64"},
|
||||
`"time"`: {"LocalTime", "Nanoseconds", "NanosecondsToLocalTime", "Seconds", "SecondsToLocalTime", "SecondsToUTC"},
|
||||
`"unicode/utf8"`: {"NewString"},
|
||||
}
|
||||
|
||||
type vetVisitor struct {
|
||||
errors map[string]token.Pos
|
||||
}
|
||||
|
||||
func (v *vetVisitor) Visit(n ast.Node) ast.Visitor {
|
||||
if sel, ok := n.(*ast.SelectorExpr); ok {
|
||||
if x, _ := sel.X.(*ast.Ident); x != nil {
|
||||
if obj := x.Obj; obj != nil && obj.Kind == ast.Pkg {
|
||||
if spec, _ := obj.Decl.(*ast.ImportSpec); spec != nil {
|
||||
for _, name := range deprecatedExports[spec.Path.Value] {
|
||||
if name == sel.Sel.Name {
|
||||
v.errors[fmt.Sprintf("%s.%s not found", spec.Path.Value, sel.Sel.Name)] = n.Pos()
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
func (b *builder) vetPackage(pkg *Package, apkg *ast.Package) {
|
||||
errors := make(map[string]token.Pos)
|
||||
for _, file := range apkg.Files {
|
||||
for _, is := range file.Imports {
|
||||
importPath, _ := strconv.Unquote(is.Path.Value)
|
||||
if !gosrc.IsValidPath(importPath) &&
|
||||
!strings.HasPrefix(importPath, "exp/") &&
|
||||
!strings.HasPrefix(importPath, "appengine") {
|
||||
errors[fmt.Sprintf("Unrecognized import path %q", importPath)] = is.Pos()
|
||||
}
|
||||
}
|
||||
v := vetVisitor{errors: errors}
|
||||
ast.Walk(&v, file)
|
||||
}
|
||||
for message, pos := range errors {
|
||||
pkg.Errors = append(pkg.Errors,
|
||||
fmt.Sprintf("%s (%s)", message, b.fset.Position(pos)))
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user