Las verificaciones de que los errores de Sentinel tienen el prefijo Err y los tipos de error se sufre con el Error o Errors .
$ go install github.com/Antonboom/errname@latest
$ errname ./...
La convención afirma que
Los tipos de error terminan en "Error" y las variables de error comienzan con "ERR" o "ERR".
Esto se puede encontrar en la biblioteca GO estándar:
type AddrError struct { /* ... */ }
type DecodeError struct { /*...*/ }
type NoMatchingVersionError struct { /*...*/ }
type nothingWrittenError struct { /*...*/ }
type pasteIndicatorError struct { /*...*/ }
type wrapError struct { /*...*/ }
var ErrFinalToken = errors . New ( "final token" )
var ErrRange = errors . New ( "value out of range" )
var ErrUnsupportedAlgorithm = errors . New ( "x509: cannot verify signature: algorithm unimplemented" )
var errMissing = errors . New ( "cannot find package" )
var errNUL = errors . New ( "unexpected NUL in input" )
var errTagValueSpace = errors . New ( "suspicious space in struct tag value" )Además, esto se puede encontrar en algunos artículos sobre errores en GO, por ejemplo, aquí:
A primera vista, pensarías que el nombramiento es un poco extraño, pero eso se debe a las convenciones: los tipos se sufre con "error", mientras que las constantes tienen prefijo "err". Así que solo estamos siguiendo las convenciones aquí.
Esta es una buena regla para mejorar la consistencia de su código. Más uniformidad, ¿qué podría ser mejor?
Simplemente no habilite el enlace.
Al momento de escribir este enlace, no tenía conocimiento de Revive .
Errname funciona de todos modos más complejos y mejores.
// Bad.
type DecodeErr struct {} // the error type name `DecodeErr` should conform to the `xxxError` format
func ( d * DecodeErr ) Error () string { /*...*/ }
// Good.
type DecodeError struct {}
func ( d * DecodeError ) Error () string { /*...*/ } // Bad.
var InvalidURLErr = errors . New ( "invalid url" ) // the sentinel error name `InvalidURLErr` should conform to the `ErrXxx` format
// Good.
var ErrInvalidURL = errors . New ( "invalid url" ) // or errInvalidURLMás ejemplos en pruebas.
var EOF = errors . New ( "end of file" )
var eof = errors . New ( "end of file" )
var W = errors . New ( "single letter error" ) // on the developer's conscience
var ovflw = errors . New ( "value is overflow" ) // on the developer's conscience type DecodeError struct {}
func ( d * DecodeError ) Error () string { /*...*/ }
// Bad.
func NewErrDecode () error {
return & DecodeError {}
}
// Good.
func NewDecodeError () error {
return & DecodeError {}
} // Bad.
var ErrExecErr = errors . New ( "exec query error" )
// Good.
var ErrExecQuery = errors . New ( "exec query error" )
var ErrGdfjnskjdfskf = errors . New ( "strange error" ) // on the developer's conscienceErrors también está permitido: // Bad.
type ValidationErrs [] string
func ( ve ValidationErrs ) Error () string { /*...*/ }
// Good.
type ValidationErrors [] string
func ( ve ValidationErrors ) Error () string { /*...*/ }$ errname . / src / ...
go / src / runtime / error. go : 72 : 6 : the error type name `errorString` should conform to the `xxxError` format
go / src / runtime / error. go : 80 : 6 : the error type name `errorAddressString` should conform to the `xxxError` format
go / src / runtime / panic. go : 180 : 5 : the sentinel error name `shiftError` should conform to the `errXxx` format
go / src / runtime / panic. go : 187 : 5 : the sentinel error name `divideError` should conform to the `errXxx` format
go / src / runtime / panic. go : 194 : 5 : the sentinel error name `overflowError` should conform to the `errXxx` format
go / src / runtime / panic. go : 201 : 5 : the sentinel error name `floatError` should conform to the `errXxx` format
go / src / runtime / panic. go : 208 : 5 : the sentinel error name `memoryError` should conform to the `errXxx` format
go / src / errors / errors. go : 63 : 6 : the error type name `errorString` should conform to the `xxxError` format
go / src / math / bits / bits_errors. go : 12 : 5 : the sentinel error name `overflowError` should conform to the `errXxx` format
go / src / math / bits / bits_errors. go : 15 : 5 : the sentinel error name `divideError` should conform to the `errXxx` format
go / src / syscall / syscall_unix. go : 114 : 6 : the error type name `Errno` should conform to the `XxxError` format
go / src / time / format. go : 394 : 5 : the sentinel error name `atoiError` should conform to the `errXxx` format
go / src / time / zoneinfo_read. go : 110 : 5 : the sentinel error name `badData` should conform to the `errXxx` format
go / src / io / fs / walk. go : 15 : 5 : the sentinel error name `SkipDir` should conform to the `ErrXxx` format
go / src / fmt / scan. go : 465 : 5 : the sentinel error name `complexError` should conform to the `errXxx` format
go / src / fmt / scan. go : 466 : 5 : the sentinel error name `boolError` should conform to the `errXxx` format
go / src / archive / tar / common. go : 39 : 6 : the error type name `headerError` should conform to the `xxxError` format
go / src / context / context. go : 157 : 5 : the sentinel error name `Canceled` should conform to the `ErrXxx` format
go / src / context / context. go : 161 : 5 : the sentinel error name `DeadlineExceeded` should conform to the `ErrXxx` format
go / src / math / big / float. go : 77 : 6 : the error type name `ErrNaN` should conform to the `XxxError` format
go / src / crypto / x509 / internal / macos / security. go : 39 : 6 : the error type name `OSStatus` should conform to the `XxxError` format
go / src / net / cgo_unix. go : 34 : 6 : the error type name `addrinfoErrno` should conform to the `xxxError` format
go / src / crypto / x509 / x509. go : 875 : 6 : the error type name `UnhandledCriticalExtension` should conform to the `XxxError` format
go / src / crypto / x509 / pem_decrypt. go : 110 : 5 : the sentinel error name `IncorrectPasswordError` should conform to the `ErrXxx` format
go / src / crypto / x509 / root. go : 18 : 2 : the sentinel error name `systemRootsErr` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 18 : 2 : the sentinel error name `alertCloseNotify` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 19 : 2 : the sentinel error name `alertUnexpectedMessage` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 20 : 2 : the sentinel error name `alertBadRecordMAC` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 21 : 2 : the sentinel error name `alertDecryptionFailed` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 22 : 2 : the sentinel error name `alertRecordOverflow` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 23 : 2 : the sentinel error name `alertDecompressionFailure` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 24 : 2 : the sentinel error name `alertHandshakeFailure` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 25 : 2 : the sentinel error name `alertBadCertificate` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 26 : 2 : the sentinel error name `alertUnsupportedCertificate` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 27 : 2 : the sentinel error name `alertCertificateRevoked` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 28 : 2 : the sentinel error name `alertCertificateExpired` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 29 : 2 : the sentinel error name `alertCertificateUnknown` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 30 : 2 : the sentinel error name `alertIllegalParameter` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 31 : 2 : the sentinel error name `alertUnknownCA` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 32 : 2 : the sentinel error name `alertAccessDenied` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 33 : 2 : the sentinel error name `alertDecodeError` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 34 : 2 : the sentinel error name `alertDecryptError` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 35 : 2 : the sentinel error name `alertExportRestriction` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 36 : 2 : the sentinel error name `alertProtocolVersion` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 37 : 2 : the sentinel error name `alertInsufficientSecurity` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 38 : 2 : the sentinel error name `alertInternalError` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 39 : 2 : the sentinel error name `alertInappropriateFallback` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 40 : 2 : the sentinel error name `alertUserCanceled` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 41 : 2 : the sentinel error name `alertNoRenegotiation` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 42 : 2 : the sentinel error name `alertMissingExtension` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 43 : 2 : the sentinel error name `alertUnsupportedExtension` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 44 : 2 : the sentinel error name `alertCertificateUnobtainable` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 45 : 2 : the sentinel error name `alertUnrecognizedName` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 46 : 2 : the sentinel error name `alertBadCertificateStatusResponse` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 47 : 2 : the sentinel error name `alertBadCertificateHashValue` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 48 : 2 : the sentinel error name `alertUnknownPSKIdentity` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 49 : 2 : the sentinel error name `alertCertificateRequired` should conform to the `errXxx` format
go / src / crypto / tls / alert. go : 50 : 2 : the sentinel error name `alertNoApplicationProtocol` should conform to the `errXxx` format
go / src / path / filepath / path. go : 337 : 5 : the sentinel error name `SkipDir` should conform to the `ErrXxx` format
go / src / net / http / h2_bundle. go : 1016 : 5 : the sentinel error name `http2errReadEmpty` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 1212 : 2 : the sentinel error name `http2errMixPseudoHeaderTypes` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 1213 : 2 : the sentinel error name `http2errPseudoAfterRegular` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 1712 : 5 : the sentinel error name `http2ErrFrameTooLarge` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 1866 : 2 : the sentinel error name `http2errStreamID` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 1867 : 2 : the sentinel error name `http2errDepStreamID` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 1868 : 2 : the sentinel error name `http2errPadLength` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 1869 : 2 : the sentinel error name `http2errPadBytes` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 3400 : 5 : the sentinel error name `http2errTimeout` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 3519 : 5 : the sentinel error name `http2errClosedPipeWrite` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 3629 : 2 : the sentinel error name `http2errClientDisconnected` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 3630 : 2 : the sentinel error name `http2errClosedBody` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 3631 : 2 : the sentinel error name `http2errHandlerComplete` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 3632 : 2 : the sentinel error name `http2errStreamClosed` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 4526 : 5 : the sentinel error name `http2errPrefaceTimeout` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 4746 : 5 : the sentinel error name `http2errHandlerPanicked` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 6287 : 2 : the sentinel error name `http2ErrRecursivePush` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 6288 : 2 : the sentinel error name `http2ErrPushLimitReached` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 6930 : 5 : the sentinel error name `http2ErrNoCachedConn` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 7016 : 2 : the sentinel error name `http2errClientConnClosed` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 7017 : 2 : the sentinel error name `http2errClientConnUnusable` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 7018 : 2 : the sentinel error name `http2errClientConnGotGoAway` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 7471 : 5 : the sentinel error name `http2errRequestCanceled` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 7803 : 2 : the sentinel error name `http2errStopReqBodyWrite` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 7806 : 2 : the sentinel error name `http2errStopReqBodyWriteAndCancel` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 7808 : 2 : the sentinel error name `http2errReqBodyTooLong` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 8667 : 5 : the sentinel error name `http2errClosedResponseBody` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 9021 : 2 : the sentinel error name `http2errResponseHeaderListSize` should conform to the `errXxx` format
go / src / net / http / h2_bundle. go : 9022 : 2 : the sentinel error name `http2errRequestHeaderListSize` should conform to the `errXxx` format
go / src / go / scanner / errors. go : 37 : 6 : the error type name `ErrorList` should conform to the `XxxError` format
go / src / html / template / template. go : 34 : 5 : the sentinel error name `escapeOK` should conform to the `errXxx` format
go / src / image / png / reader. go : 128 : 5 : the sentinel error name `chunkOrderError` should conform to the `errXxx` format
go / src / bufio / scan_test. go : 308 : 5 : the sentinel error name `testError` should conform to the `errXxx` format
go / src / crypto / tls / handshake_client_test. go : 1993 : 5 : the sentinel error name `brokenConnErr` should conform to the `errXxx` format
go / src / database / sql / sql_test. go : 4281 : 5 : the sentinel error name `pingError` should conform to the `errXxx` format
go / src / errors / wrap_test. go : 216 : 6 : the error type name `errorT` should conform to the `xxxError` format
go / src / errors / wrap_test. go : 229 : 6 : the error type name `errorUncomparable` should conform to the `xxxError` format
go / src / fmt / errors_test. go : 75 : 6 : the error type name `errString` should conform to the `xxxError` format
go / src / html / template / exec_test. go : 233 : 5 : the sentinel error name `myError` should conform to the `errXxx` format
go / src / html / template / exec_test. go : 1313 : 5 : the sentinel error name `alwaysError` should conform to the `errXxx` format
go / src / net / http / transport_test. go : 6280 : 5 : the sentinel error name `timeoutProtoErr` should conform to the `errXxx` format
go / src / text / template / exec_test. go : 229 : 5 : the sentinel error name `myError` should conform to the `errXxx` format
go / src / text / template / exec_test. go : 1305 : 5 : the sentinel error name `alwaysError` should conform to the `errXxx` format$ errname. / ...
# no issues$ errname. / ...
terraform / internal / getmodules / file_detector. go : 59 : 6 : the error type name `MaybeRelativePathErr` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 13 : 6 : the error type name `ErrHostNoProviders` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 39 : 6 : the error type name `ErrHostUnreachable` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 57 : 6 : the error type name `ErrUnauthorized` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 80 : 6 : the error type name `ErrProviderNotFound` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 104 : 6 : the error type name `ErrRegistryProviderNotKnown` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 123 : 6 : the error type name `ErrPlatformNotSupported` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 159 : 6 : the error type name `ErrProtocolNotSupported` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 181 : 6 : the error type name `ErrQueryFailed` should conform to the `XxxError` format
terraform / internal / getproviders / errors. go : 219 : 6 : the error type name `ErrRequestCanceled` should conform to the `XxxError` format
terraform / internal / registry / errors. go : 10 : 6 : the error type name `errModuleNotFound` should conform to the `xxxError` format
terraform / internal / backend / remote - state / consul / client. go : 36 : 5 : the sentinel error name `lostLockErr` should conform to the `errXxx` format
terraform / internal / command / cliconfig / credentials. go : 408 : 6 : the error type name `ErrUnwritableHostCredentials` should conform to the `XxxError` format