Verwenden Sie Standardbibliotheksvariablen / Sudo Null IT News

Go-Entwickler schreiben oft ihre eigenen Variablen oder Konstanten und verwenden sie dann in Code, der auf die Standardbibliothek zugreift. Also hat unser Go-Entwickler Sasha Melentiev den usesdlibvars-Linter erstellt, der bestimmt, ob Variablen oder Konstanten aus der Standardbibliothek wiederverwendet werden können, anstatt eigene zu erstellen.

GitHub – sashamelentyev/usestdlibvars: Ein Linter, der die Möglichkeit erkennt, Variablen/Konstanten aus der Go-Standardbibliothek zu verwenden.

github.com

Beispielsweise erstellen Sie eine Anfrage. Es muss eine Methode verwenden, zum Beispiel getpost, in diesem Fall schreiben viele Entwickler get. Stattdessen können Sie aber auch eine Konstante aus der Standardbibliothek verwenden. Sie müssen keinen zusätzlichen Code schreiben, der Linter spart Ihnen Zeit.

Anstelle von http.NewRequest(“GET”, “”, nil) können Sie beispielsweise http.NewRequest(http.MethodGet, “”, nil) verwenden — der Linter wird dies hervorheben.

Wichtig ist, dass es in der Standardbibliothek viele verschiedene Variablen gibt, die wiederverwendet werden können, aber nicht immer geeignet sind. Damit es zu keinen Fehlalarmen kommt, sind laut Standard nur zwei Optionen in unserem Linter enthalten (z. B. eine Prüfung in Bezug auf die interne http-Bibliothek).

Der Name des Linters, UseStdLibVars, ist im Wesentlichen ein Aufruf zum Handeln „Standardbibliotheksvariablen verwenden“. Linter ist bereits in golangci-lint enthalten.

Installation

Gehen Sie zur Installation von github.com/sashamelentyev/usestdlibvars@latest

Verwendungszweck

$ usestdlibvars -h usestdlibvars: Ein Linter, der die Möglichkeit erkennt, Variablen/Konstanten aus der Go-Standardbibliothek zu verwenden. Verwendung: usestdlibvars [-flag] [package]

Flags: -V Druckversion und Beenden -all keine Auswirkung (veraltet) -c int zeigt anstößige Zeile mit so vielen Kontextzeilen an (Standard -1) -constant-kind schlägt die Verwendung von constant.Kind.String() vor -cpuprofile string CPU-Profil in diese Datei schreiben -crypto-hash schlägt die Verwendung von crypto.Hash.String() vor -debug String Debug Flags, jede Teilmenge von “fpstv” -fix wendet alle vorgeschlagenen Fixes an -flags gibt Analyser-Flags in JSON aus -http-Methode schlage die Verwendung von http.MethodXX vor (standardmäßig wahr) -http-status-code schlage die Verwendung von http.StatusXX vor (standardmäßig wahr) -json gib JSON-Ausgabe aus -memprofile string schreibe Speicherprofil in diese Datei -os-dev-null schlage vor Verwendung von os.DevNull -rpc-default-path schlägt die Verwendung von rpc.DefaultXXPath vor -source keine Auswirkung (veraltet) -sql-isolation-level schlägt die Verwendung von sql.LevelXX.String() vor -tags string keine Auswirkung (veraltet) -test gibt an, ob auch Testdateien analysiert werden sollen (Standardeinstellung wahr) -time-layout schlägt die Verwendung von time.Layout vor -time-month schlägt die Verwendung von time.Month vor .String() -time-weekday schlägt die Verwendung von time.Weekday.String() vor -tls-signature-scheme schlägt die Verwendung von tls.SignatureScheme.String() vor -trace string Traceprotokoll in diese Datei schreiben -v keine Auswirkung ( veraltet)

Beispiele

Paketantwort import ( “bytes” “encoding/json” “net/http” ) // JSON marshallt v zu JSON, HTML automatisch maskiert, // Content-Type-Header als “application/json; charset=utf-8” setzen , // sendet einen HTTP-Antwortheader mit dem bereitgestellten statusCode und // schreibt das gemarshallte v als Bytes als Teil einer HTTP-Antwort an die Verbindung. func JSON(w http.ResponseWriter, statusCode int, v any) { var buf bytes.Buffer enc := json.NewEncoder(&buf) enc.SetEscapeHTML(true) if err := enc.Encode(v); err != nil { http.Error(w, err.Error(), 500) return } w.Header().Set(“Content-Type”, “application/json; charset=utf-8”) w.WriteHeader (statusCode) if _, err := w.Write(buf.Bytes()); err != nil { http.Error(w, err.Error(), 500) return } }usestdlibvars ./…response.go:18:30: “500” kann ersetzt werden durch http.StatusInternalServerError response.go: 24:30: „500“ kann durch http.StatusInternalServerError ersetzt werden

Zukunftspläne

Wir werden die Änderungen in der Sprache verfolgen. Wenn neue Konstanten auftauchen, die in bestimmten Fällen verwendet werden können, werden wir die Funktionalität des Linters ergänzen. Sie können auch einen Beitrag leisten und uns Pull-Requests senden.

Similar Posts

Leave a Reply

Your email address will not be published.