Linting is een soort statische code-analyse voor het identificeren van mogelijke codebase-fouten. Linters analyseren code op syntaxisfouten en stijlproblemen. Het proces kan bugs helpen voorkomen, de leesbaarheid verbeteren, best practices afdwingen en tijd besparen.
Linting is een standaardpraktijk in softwareontwikkeling. Hoewel er geen linter is ingebouwd in de standaardbibliotheek van Go, zijn er veel linting-tools van derden in het Go-ecosysteem. Deze omvatten de pakketten GolangCI Lint, Go Meta Linter en Staticcheck.
Het GolangCI Lint-pakket
Het golangci-lint-pakket is een krachtige en flexibele linter voor Go waarmee u codefouten kunt identificeren en oplossen. Het gebruiksgemak, de uitbreidbaarheid en de uitgebreide set ingebouwde linters van het pakket maken het een populaire keuze voor veel Go-ontwikkelaars.
GolangCI Lint analyseert de Go-broncode en geeft feedback over mogelijke bugs, beveiligingsproblemen en codeerstijlschendingen met functionaliteit voor hoogwaardige analyse en continue integratie (CI) steun.
Voer deze terminalopdracht uit in de werkmap van uw project om het Golangci-lint-pakket te installeren:
ga github.com/golangci/golangci-lint/cmd/[email protected] installeren
Uw Go-versie moet 1.19 of hoger zijn om de opdracht het pakket te laten installeren. U kunt ook de golangci-lint installaties pagina voor andere beschikbare installatiemethoden.
De opdracht installeert GolangCI op uw systeem als een CLI-tool. U kunt de installatie verifiëren met deze opdracht:
golangci-lint --version
De opdracht zou de versie van golangci-lint moeten weergeven die u hebt geïnstalleerd.
De Linter configureren
Linters zijn zeer veelzijdig, dus om een linter te installeren, moet u de linter configureren voor uw project.
De golangci-lint hulpmiddel gebruikt YAML-bestanden voor configuratie. U specificeert de instellingen van uw linter in het YAML-bestand zodat het pakket kan lezen.
U kunt een standaardconfiguratiebestand maken met behulp van deze opdracht:
golangci-lint config > .golangci.yml
De opdracht maakt een nieuw bestand met de naam .golangci.yml in uw huidige map. U kunt doorgaan met het bewerken van dit bestand om de linter voor uw project te configureren.
Hier is de inhoud van de .golangci.yml bestand wanneer u de opdracht uitvoert:
Het bestand bevat informatie over de golangci-lint tool en de opties die u kunt gebruiken om uw aanbiedingsproces te configureren.
U moet het bestand bewerken om de linting-regels voor uw programma toe te voegen. U vindt de volledige lijst met beschikbare linters op de golangci-lint Linters documentatie pagina. Of je kunt de linters helpen opdracht om de linters op uw opdrachtregel te bekijken:
golangci-lint help linters
De opdracht voert alle Linters uit die beschikbaar zijn voor de versie van het pakket dat u hebt geïnstalleerd.
Het runnen van de Linter
Hier is een demonstratie van het pluizen van de volgende "Hello, World!" programma dat gebruik maakt van de net/http pakket:
pakket voornaamst
importeren (
"fmt"
"net/http"
)funcbehandelaar(w http. ResponseWriter, r *http. Verzoek) {
fmt. Fprintf (w, "Hallo Wereld!")
}
funcvoornaamst() {
http. HandvatFunc("/", begeleider)
http. LuisterEnServe(":8080", nihil)
}
Dit programma definieert een behandelaar functie die schrijver- en verzoekinstanties van de http pakketjes ReactieSchrijver En Verzoek struct typen. De behandelaar functie schrijft "Hello, World!" op verzoek aan de opdrachtgever.
De voornaamst functie koppelt de / weg naar de behandelaar functie, en de ListenAndServe functie start de server op de localhost-poort 8080.
De ListenAndServe functie retourneert een fout, maar het programma negeert deze. Deze configuratie zorgt ervoor dat de linter het probleem benadrukt:
linters-instellingen:
dode code:
# negeer alle testbestanden
skip-bestanden: "_test\\.go$"
govet:
# schaduwcontrole uitschakelen
check-schaduwen: vals
golint:
# negeer fouten over geëxporteerde functienamen
uitsluiten-gebruik-standaard-geëxporteerd: WAAR
# negeer fouten over underscores in pakket namen
sluit-nutteloze-naamgeving uit: WAAR
gosec:
# schakel gosec-tests uit, omdat ze traag zijn en kunnen produceren vals positieven
testen: vals
ongebruikt:
# rapporteer ongebruikte functieargumenten, maar niet ongebruikte variabelen
check-geëxporteerd: WAAR
vinkje leeg: WAAR
check-testen: WAAR
Nadat u deze linterconfiguratie hebt ingesteld, kunt u de linter gebruiken met de loop commando:
golangci-lint rennen
# equivalent, voert alle programma's uit
golangci-lint rennen ./...
U kunt ook specifieke bestanden pluizen door de bestandsnaam of het pad op te geven achter de loop commando:
golangci-lint run dir1 dir2/... dir3/bestand1.go
Dit is het resultaat van het uitvoeren van de linter tegen het programma:
De golangci-lint tool is veelzijdig en uw configuratie zal variëren op basis van uw project.
U kunt uw JavaScript-projecten pluizen met ESLint
Linting is een populaire softwareontwikkelingstaak en de meeste programmeertalen en IDE's bieden tools voor linting-programma's. Voor JavaScript is ESLint de meest populaire linter.
Eslint biedt meerdere linting-regels die de industriestandaarden volgen in de CLI-, IDE- en teksteditortools, waardoor de linting-tool een uitstekende keuze is voor JavaScript-ontwikkelaars.