summaryrefslogtreecommitdiff
path: root/libgo/go/cmd/go/vet.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/cmd/go/vet.go')
-rw-r--r--libgo/go/cmd/go/vet.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/libgo/go/cmd/go/vet.go b/libgo/go/cmd/go/vet.go
new file mode 100644
index 0000000000..02ff54b2ac
--- /dev/null
+++ b/libgo/go/cmd/go/vet.go
@@ -0,0 +1,50 @@
+// Copyright 2011 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.
+
+package main
+
+import "path/filepath"
+
+func init() {
+ addBuildFlagsNX(cmdVet)
+}
+
+var cmdVet = &Command{
+ Run: runVet,
+ UsageLine: "vet [-n] [-x] [packages]",
+ Short: "run go tool vet on packages",
+ Long: `
+Vet runs the Go vet command on the packages named by the import paths.
+
+For more about vet, see 'godoc golang.org/x/tools/cmd/vet'.
+For more about specifying packages, see 'go help packages'.
+
+To run the vet tool with specific options, run 'go tool vet'.
+
+The -n flag prints commands that would be executed.
+The -x flag prints commands as they are executed.
+
+See also: go fmt, go fix.
+ `,
+}
+
+func runVet(cmd *Command, args []string) {
+ for _, p := range packages(args) {
+ // Vet expects to be given a set of files all from the same package.
+ // Run once for package p and once for package p_test.
+ if len(p.GoFiles)+len(p.CgoFiles)+len(p.TestGoFiles) > 0 {
+ runVetFiles(p, stringList(p.GoFiles, p.CgoFiles, p.TestGoFiles, p.SFiles))
+ }
+ if len(p.XTestGoFiles) > 0 {
+ runVetFiles(p, stringList(p.XTestGoFiles))
+ }
+ }
+}
+
+func runVetFiles(p *Package, files []string) {
+ for i := range files {
+ files[i] = filepath.Join(p.Dir, files[i])
+ }
+ run(tool("vet"), relPaths(files))
+}