go/analysis/passes: ensure diagnostic-reporting analyses have exported Doc

This adds an exported Doc constant to the packages for the analyses that don't
have them that contains the Analyzer.Doc string for the package's Analyzer.
The godoc for the Doc constant can then be linked to in urls reported by
analysis tools.

Change-Id: I39df71abcb29bbddf1866286d63aa5216b6224d8
Reviewed-on: https://go-review.googlesource.com/c/tools/+/207612
Run-TryBot: Michael Matloob <matloob@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
diff --git a/go/analysis/passes/asmdecl/asmdecl.go b/go/analysis/passes/asmdecl/asmdecl.go
index c2e89ee..5c93a4f 100644
--- a/go/analysis/passes/asmdecl/asmdecl.go
+++ b/go/analysis/passes/asmdecl/asmdecl.go
@@ -22,9 +22,11 @@
 	"golang.org/x/tools/go/analysis/passes/internal/analysisutil"
 )
 
+const Doc = "report mismatches between assembly files and Go declarations"
+
 var Analyzer = &analysis.Analyzer{
 	Name: "asmdecl",
-	Doc:  "report mismatches between assembly files and Go declarations",
+	Doc:  Doc,
 	Run:  run,
 }
 
diff --git a/go/analysis/passes/atomicalign/atomicalign.go b/go/analysis/passes/atomicalign/atomicalign.go
index 504b1c2..7387df0 100644
--- a/go/analysis/passes/atomicalign/atomicalign.go
+++ b/go/analysis/passes/atomicalign/atomicalign.go
@@ -19,9 +19,11 @@
 	"golang.org/x/tools/go/ast/inspector"
 )
 
+const Doc = "check for non-64-bits-aligned arguments to sync/atomic functions"
+
 var Analyzer = &analysis.Analyzer{
 	Name:     "atomicalign",
-	Doc:      "check for non-64-bits-aligned arguments to sync/atomic functions",
+	Doc:      Doc,
 	Requires: []*analysis.Analyzer{inspect.Analyzer},
 	Run:      run,
 }
diff --git a/go/analysis/passes/bools/bools.go b/go/analysis/passes/bools/bools.go
index fbc1f7e..5ae47d8 100644
--- a/go/analysis/passes/bools/bools.go
+++ b/go/analysis/passes/bools/bools.go
@@ -17,9 +17,11 @@
 	"golang.org/x/tools/go/ast/inspector"
 )
 
+const Doc = "check for common mistakes involving boolean operators"
+
 var Analyzer = &analysis.Analyzer{
 	Name:     "bools",
-	Doc:      "check for common mistakes involving boolean operators",
+	Doc:      Doc,
 	Requires: []*analysis.Analyzer{inspect.Analyzer},
 	Run:      run,
 }
diff --git a/go/analysis/passes/buildtag/buildtag.go b/go/analysis/passes/buildtag/buildtag.go
index 5a441e6..78176f1 100644
--- a/go/analysis/passes/buildtag/buildtag.go
+++ b/go/analysis/passes/buildtag/buildtag.go
@@ -16,9 +16,11 @@
 	"golang.org/x/tools/go/analysis/passes/internal/analysisutil"
 )
 
+const Doc = "check that +build tags are well-formed and correctly located"
+
 var Analyzer = &analysis.Analyzer{
 	Name: "buildtag",
-	Doc:  "check that +build tags are well-formed and correctly located",
+	Doc:  Doc,
 	Run:  runBuildTag,
 }
 
diff --git a/go/analysis/passes/cgocall/cgocall.go b/go/analysis/passes/cgocall/cgocall.go
index d499f3c..1b7b8d2 100644
--- a/go/analysis/passes/cgocall/cgocall.go
+++ b/go/analysis/passes/cgocall/cgocall.go
@@ -23,7 +23,7 @@
 
 const debug = false
 
-const doc = `detect some violations of the cgo pointer passing rules
+const Doc = `detect some violations of the cgo pointer passing rules
 
 Check for invalid cgo pointer passing.
 This looks for code that uses cgo to call C code passing values
@@ -34,7 +34,7 @@
 
 var Analyzer = &analysis.Analyzer{
 	Name:             "cgocall",
-	Doc:              doc,
+	Doc:              Doc,
 	RunDespiteErrors: true,
 	Run:              run,
 }
diff --git a/go/analysis/passes/errorsas/errorsas.go b/go/analysis/passes/errorsas/errorsas.go
index cd37407..b80271a 100644
--- a/go/analysis/passes/errorsas/errorsas.go
+++ b/go/analysis/passes/errorsas/errorsas.go
@@ -16,14 +16,14 @@
 	"golang.org/x/tools/go/types/typeutil"
 )
 
-const doc = `report passing non-pointer or non-error values to errors.As
+const Doc = `report passing non-pointer or non-error values to errors.As
 
 The errorsas analysis reports calls to errors.As where the type
 of the second argument is not a pointer to a type implementing error.`
 
 var Analyzer = &analysis.Analyzer{
 	Name:     "errorsas",
-	Doc:      doc,
+	Doc:      Doc,
 	Requires: []*analysis.Analyzer{inspect.Analyzer},
 	Run:      run,
 }
diff --git a/go/analysis/passes/printf/printf.go b/go/analysis/passes/printf/printf.go
index 38a752c..a81dba9 100644
--- a/go/analysis/passes/printf/printf.go
+++ b/go/analysis/passes/printf/printf.go
@@ -33,14 +33,14 @@
 
 var Analyzer = &analysis.Analyzer{
 	Name:       "printf",
-	Doc:        doc,
+	Doc:        Doc,
 	Requires:   []*analysis.Analyzer{inspect.Analyzer},
 	Run:        run,
 	ResultType: reflect.TypeOf((*Result)(nil)),
 	FactTypes:  []analysis.Fact{new(isWrapper)},
 }
 
-const doc = `check consistency of Printf format strings and arguments
+const Doc = `check consistency of Printf format strings and arguments
 
 The check applies to known functions (for example, those in package fmt)
 as well as any detected wrappers of known functions.
diff --git a/go/analysis/passes/shift/shift.go b/go/analysis/passes/shift/shift.go
index 0db95da..1f3df07 100644
--- a/go/analysis/passes/shift/shift.go
+++ b/go/analysis/passes/shift/shift.go
@@ -21,9 +21,11 @@
 	"golang.org/x/tools/go/ast/inspector"
 )
 
+const Doc = "check for shifts that equal or exceed the width of the integer"
+
 var Analyzer = &analysis.Analyzer{
 	Name:     "shift",
-	Doc:      "check for shifts that equal or exceed the width of the integer",
+	Doc:      Doc,
 	Requires: []*analysis.Analyzer{inspect.Analyzer},
 	Run:      run,
 }
diff --git a/go/analysis/passes/unmarshal/unmarshal.go b/go/analysis/passes/unmarshal/unmarshal.go
index d019ece..f9cc993 100644
--- a/go/analysis/passes/unmarshal/unmarshal.go
+++ b/go/analysis/passes/unmarshal/unmarshal.go
@@ -16,14 +16,14 @@
 	"golang.org/x/tools/go/types/typeutil"
 )
 
-const doc = `report passing non-pointer or non-interface values to unmarshal
+const Doc = `report passing non-pointer or non-interface values to unmarshal
 
 The unmarshal analysis reports calls to functions such as json.Unmarshal
 in which the argument type is not a pointer or an interface.`
 
 var Analyzer = &analysis.Analyzer{
 	Name:     "unmarshal",
-	Doc:      doc,
+	Doc:      Doc,
 	Requires: []*analysis.Analyzer{inspect.Analyzer},
 	Run:      run,
 }