internal/scan: Improve "Informational" text output

This change changes the text output to only include messages relating to
vulnerabilities that actually appear. This means that if there is a
package level vuln but no module level vulnerabilities, govulncheck will
no longer say "There are also 0 vulnerabilities in modules that you

Additionally, this change cleans up how the informational section
actually builds the string, using strings.Builder and automatically
wrapping text with handler.wrap() instead of manually wrapping the text.

Change-Id: Ia933ee777d87004ec94918954619e916ec307dd7
Reviewed-by: Ian Cottrell <>
LUCI-TryBot-Result: Go LUCI <>
Reviewed-by: Zvonimir Pavlinovic <>
16 files changed
tree: 70da2d832d963e59c506b0e8150eea1c52821c1a
  1. cmd/
  2. devtools/
  3. doc/
  4. internal/
  5. scan/
  6. .gitignore
  7. all_test.go
  8. checks.bash
  10. go.mod
  11. go.sum

Go Vulnerability Management

Go Reference

Go's support for vulnerability management includes tooling for analyzing your codebase and binaries to surface known vulnerabilities in your dependencies. This tooling is backed by the Go vulnerability database, which is curated by the Go security team. Go’s tooling reduces noise in your results by only surfacing vulnerabilities in functions that your code is actually calling.

You can install the latest version of govulncheck using go install

go install

Then, run govulncheck inside your module:

govulncheck ./...

See the govulncheck tutorial to get started, and for more information about Go's support for vulnerability management. The API documentation can be found at

Privacy Policy

The privacy policy for govulncheck can be found at


Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.

Database entries available at are distributed under the terms of the CC-BY 4.0 license.