code: func (f *file) lintErrorStrings() {
  	f.walk(func(node ast.Node) bool {
  		ce, ok := node.(*ast.CallExpr)
  		if !ok {
  			return true
  		}
  		if !isPkgDot(ce.Fun, "errors", "New") && !isPkgDot(ce.Fun, "fmt", "Errorf") {
  			return true
  		}
  		if len(ce.Args) < 1 {
  			return true
  		}
  		str, ok := ce.Args[0].(*ast.BasicLit)
  		if !ok || str.Kind != token.STRING {
  			return true
  		}
  		s, _ := strconv.Unquote(str.Value) // can assume well-formed Go
  		if s == "" {
  			return true
  		}
  		clean, conf := lintErrorString(s)
  		if clean {
  			return true
  		}
  
  		f.errorf(str, conf, link(styleGuideBase+"#error-strings"), category("errors"),
  			"error strings should not be capitalized or end with punctuation or a newline")
  		return true
  	})
  }
docs: // lintErrorStrings examines error strings.
  // It complains if they are capitalized or end in punctuation or a newline.