vad är en linter? Kort sagt, en linter är ett verktyg som hjälper dig att förbättra din kod. Begreppet linter är inte exklusivt för JavaScript. Ändå skulle jag säga att majoriteten av människor som försöker lära sig om linters är intresserade av de som riktar sig till JavaScript (eller, mer allmänt, dynamiskt skrivna språk.)
i dagens inlägg svarar vi på titelfrågan och mer. Vi börjar med att definiera termen ” linter.,”Du kommer att förstå vad det här är och hur det kom att bli. Sedan pratar vi om fördelarna med linters och fortsätter att prata om de olika typerna av kontroller som de erbjuder.
slutligen visar vi dig flera exempel på linters till ditt förfogande, ger några praktiska tips om hur du kommer igång och avslutar med några slutliga överväganden.
låt oss komma igång.
Vad Är en Linter? En kort översikt
låt oss börja med att definiera vad en linter är. Som du har läst i introduktionen är en linter ett verktyg som hjälper dig att förbättra din kod. Men på vilket sätt gör den det?, Svaret är: genom att analysera din källkod letar efter problem.
termen linter kommer från ett verktyg som ursprungligen kallades ”lint” som analyserade C-källkoden. Dataforskaren Stephen C. Johnson utvecklade detta verktyg 1978 när han arbetade på Bell Labs.
både det ursprungliga lint-verktyget, liksom tidigare liknande verktyg, hade målet att analysera källkoden för att komma med kompilatoraptimeringar. Med tiden började luddliknande verktyg lägga till många andra typer av kontroller och verifiering.,
men som vi nämnde under introduktionen är linters inte begränsade till kompilerade språk. Tvärtom: vi kan säga att linters är mycket mer värdefulla för tolkade språk eftersom det inte finns någon kompilator för att upptäcka fel under utvecklingstiden.
fördelar med Linting
Du har just lärt dig definitionen av linter. Du vet nu också när denna typ av verktyg uppfanns, och av vem. Du har förmodligen nu åtminstone en allmän uppfattning om vad en linter kan göra för din kod., Men i mer praktiska termer, vilka är de fördelar som denna typ av verktyg kan ge? Här är några:
- färre fel i produktionen
- läsbar, underhållbar och mer konsekvent kod
- färre diskussioner om kodstil och estetiska val under kodrecensioner
- objektiv mätning av kodkvalitet
- säkrare och prestandakod
nästa avsnitt täcker några av de typer av kontroller som linters tillhandahåller. Efter att ha läst det förstår du hur linters ger fördelarna ovan.,
typer av kontroller Linters ger
som du just har läst, den ursprungliga ludd verktyg analyserad kod för att aktivera optimeringar för kompilatorer, men med tiden, mer avancerade och kompletta verktyg släpptes. Numera har vi otaliga olika linters, som ger många typer av kontroller. Låt oss snabbt gå igenom några av dem.
syntaxfel
den mest grundläggande och mer vitala typen av kontroller som en linter kan tillhandahålla är syntaxfelverifieringar när det gäller JavaScript och andra tolkade språk., Utvecklare bör inte ens driva kod till huvudlinjen utan att den passerar syntaxverifieringar.
ett sätt att åstadkomma detta är att använda pre-commit krokar som hindrar användare från att trycka sin kod när Linter verifiering indikerar att det finns problem med koden.
code Standards Adherence
en annan viktig typ av kontroll som linters tillhandahåller är efterlevnad av kodningsstandarder. Vissa människor kan avfärda detta som en rent estetisk oro, men de skulle vara fel., Att ha en enda konsekvent kodning stil är fördelaktigt för att minska den kognitiva belastningen av läsning, förståelse och upprätthålla koden. En kodbas som har en konsekvent kod stil kommer att bli lättare att förstå, och utvecklarna som använder det kommer att vara mindre benägna att införa buggar.
det är därför det finns linters som specialiserar sig på att verifiera kodbaser för att följa kodformat. Vissa verktyg är påstridiga, dvs de kommer med en fördefinierad uppsättning regler och konventioner som inte kan ändras., Å andra sidan, det finns verktyg som kan vara mycket konfigurerbar, så att användaren kan anpassa verktyget till sina föredragna kodning stilar.
potentiella problem (Alias kod luktar)
kod luktar är tecken på att något kan vara fel med din kod. Det är otroligt användbart att ha ett verktyg för att upptäcka dessa tecken automatiskt, så att du kan undersöka dem vidare, om det behövs.
till exempel anser många människor—inklusive mig—att långa funktioner är en kodlukt. Så, du kan konfigurera din linter att upptäcka funktioner som är längre än ett visst antal rader.,
en annan ofta citerad kod lukt är kod som är för komplex. Men vi pratar inte om komplexitet på ett subjektivt sätt, men en mycket objektiv. Cyclomatic komplexitet är en användbar kod metrisk som representerar antalet möjliga körningsvägar inuti en funktion. Linters kan beräkna cyklomatiska komplexiteten i dina funktioner och flagga de som är högre än en viss tröskel.
säkerhetskontroller
sist men inte minst har vi säkerhet, vilket utan tvekan är den mest kritiska aspekten av en modern applikation, särskilt en webbapp., Få det fel, och konsekvenserna kan vara katastrofala, inte bara när det gäller pengar och rykte men även juridiska (tror GDPR och liknande regler.)
lyckligtvis är detta ett annat område där linters kan vara till hjälp eftersom det finns verktyg som ger viktiga säkerhetskontroller.
förstå statisk analys
Vi har förklarat vilka linters som är och varför de är användbara. Vi har också täckt de viktigaste typerna av linters. Du är nu redo att lära dig om några exempel på linting verktyg för en mängd olika användningsområden och målprogrammeringsspråk.,
innan vi kommer dit, låt oss dock ta en kort utvikning för att prata om statisk analys, eftersom denna term visas i nästa avsnitt, och vi har inte definierat det ännu.
Så, vad är statisk analys? Du kan tänka dig statisk analys som en förkörd debug. Statisk analys består av att använda verktyg som analyserar din källkod letar efter fel, bristande efterlevnad av regler eller konventioner, eller andra potentiella problem.
nästa avsnitt visar exempel på linters som kategoriseras beroende på vilken typ av verifiering de utför., Poster som kategoriseras under statisk analys avser främst de första och tredje typerna av linters som anges i ovanstående avsnitt.
exempel på Linters
låt oss nu kortfattat nämna några exempel på linters. Vi visar exempel på olika programmeringsspråk, kategoriserade efter typ av kontroll som de tillhandahåller. Tänk på att vissa verktyg kan erbjuda mer än en typ av verifiering, så det är anledningen till att vissa verktyg visas i mer än en kategori.,>
Linters för säkerhet
- Gosec för Go
- Bandit för Python
- LGTM för flera språk, inklusive JavaScript, Python och C#
Linters för kodning konventioner / kodning formatering
- snyggare för JavaScript
- RUBOCOP för Ruby
- StyleCop för c#
Linters i JavaScript: hur man kommer igång
innan vi avslutar artikeln vill vi ge dig en kort men praktisk guide om hur du kommer igång med linting i JavaScript., Eftersom det är JavaScript vi pratar om är det ingen överraskning att det finns många verktyg för dig att välja mellan. Eftersom vi måste välja en, så följer vi med ESLint.
installera ESLint
första saker först: låt oss installera Lintern. ESLint installeras via npm, vilket innebär att du måste ha nod.JS installerat. Om du inte redan har det, ladda ner det och installera det så att vi kan fortsätta.
med nod.js installerat, vi är redo att installera ESLint via npm., the following command:
1
|
npm install eslint –global
|
However, this isn’t the approach recommended in their documentation., Istället bör du antagligen installera ESLint per projekt.,ory for your project:
1
|
mkdir eslint-sample-app
|
Then, cd into the directory and run the command below to create a package.,JSON fil (det kommer att behövas på vägen.
1
|
npm init
|
npm kommer att ställa flera frågor., Tryck bara på enter för att använda standardsvaret för dem alla.,gjorde, genom att köra:
1
|
npx eslint –init
|
När du kör kommandot ovan, ESLint kommer att be dig om vad du vill använda det till., Alternativen är: att kontrollera endast syntax, att kontrollera syntax och hitta problem, och att kontrollera syntax, hitta problem och genomdriva kod stil.
låt oss gå med det sista alternativet. Använd piltangenterna för att ändra alternativ och ange för att bekräfta. ESLint vill då veta vilka typer av moduler ditt projekt använder. Svaren är:
- JavaScript-moduler
- CommonJS-moduler
- ingen av dessa
Välj JavaScript-moduler och fortsätt. Därefter frågar den dig vilken ram som använder ditt projekt., Svaren är återigen tre:
- React
- Vue
- ingen av dessa
i vårt fall, låt oss välja alternativet ”Ingen”. Nästa fråga är en” ja/nej ” fråga:använder ditt projekt Typescript? Tryck på ” N ” för nej. Därefter frågar du om din kod körs i webbläsaren eller i Nod.
ESLint frågar dig sedan hur du väljer ett sätt att definiera en kodstil för ditt projekt. Det ger dig tre möjligheter: med hjälp av en populär stil guide, svara på frågor om din stil preferenser, eller inspektera din .JS-filer. Välj det första alternativet., Då blir du ombedd att välja mellan tre stilar: AirBNB, Standard och Google. För denna handledning, låt oss välja Google.
ESLint frågar sedan vilket format du föredrar för din konfiguration. Välj YAML. Slutligen, när du frågas om du vill ladda ner den valda kodstilen med npm, svara ” ja.”
med hjälp av ESLint för att kontrollera en fil
Efter nedladdningen är klar, kommer du att vara redo att använda ESLint för att kontrollera en fil. Men för det behöver du en fil att kontrollera. Om du råkar ha en .JS-fil hänger runt någonstans, kopiera den till din projektkatalog., Alternativt kan du klona det här arkivet, som innehåller en enda fil, och använda den för din testning.,
för att kontrollera filen använder du följande kommando:
Javascript
1
|
NPX eslint path-to-your-file.,js
|
det här är resultatet jag får från att köra kommandot riktat mot hälsningen.,js-fil som du kan ladda ner från arkivet på GitHub:
1
2
3
4
5
6
|
F:\demos\eslint-demo\greeter. – herr talman!,js
2:3 fel saknas jsdoc kommentar require-jsdoc
3:1 Fel den här raden har en längd på 86. Maximum allowed is 80 max-len
10: 4 Error Unexpected’ this ’ no-invalid-this
3 Problem (3 fel, 0 varningar)
|
som du kan se har jag tre fel och inga varningar.
Vad Är en Linter? Ett bra verktyg för ditt Verktygbälte
i det här inlägget har vi undersökt begreppet ett linterverktyg. Nu har du en solid uppfattning om vad linters är och varför du ska anta en., Dessutom har du lärt dig om olika typer av linterverktyg och exempel på varje kategori, med inriktning på flera olika programmeringsspråk.
förutom allt detta, nu vet du hur du kommer igång med ett populärt lintverktyg för JavaScript: ESLint.
vad är nästa steg?, Det finns flera saker du kan lära dig att göra nästa:
- inaktivera regler
- aktivera en regel som en varning eller ett fel
- integrera linting i din byggprocess
- Avancerat konfigurationsalternativ
- skapa dina egna regler
Du kan naturligtvis också experimentera med andra linters. Bara för att vi har valt ESLint för den här guiden betyder det inte att du ska fastna med den.
slutligen, glöm inte att linting, medan otroligt värdefull, är bara ett annat vapen i din arsenal., Du bör inte glömma automatiserad testning, kod översyn, refactoring, och många andra metoder, tekniker och verktyg till ditt förfogande i den oändliga kampen mot kaos i kodbasen.
och bland alla metoder, tekniker och verktyg du kan utnyttja för att göra din kodbas bättre, kan vi inte låta bli att enstaka slut-till-slut-testning, vilket är en ofta förbisedd typ av testning. Och det är synd. Med rätt verktyg för att hjälpa dig, kvalitet end-to-end testning kan vara en kraftfull allierad i din kamp mot kod entropi.