Wat is een linter? Kortom, een linter is een hulpmiddel om je code te verbeteren. Het concept van linter is niet exclusief voor JavaScript. Toch zou ik zeggen dat de meerderheid van de mensen die proberen te leren over linters geïnteresseerd zijn in degenen die zich richten op JavaScript (of, meer in het algemeen, dynamisch getypte talen.)
in het bericht van vandaag beantwoorden we de titelvraag en meer. We beginnen met het definiëren van de term “linter.,”Je zult begrijpen wat dit ding is en hoe het is geworden. Dan, we praten over de voordelen van linters en verder te praten over de verschillende soorten controles die zij bieden.
tot slot laten we u enkele voorbeelden zien van linters die tot uw beschikking staan, geven we enkele praktische tips over hoe u aan de slag kunt, en sluiten we af met een paar Laatste overwegingen.
laten we beginnen.
Wat Is een Linter? Een kort overzicht
laten we beginnen met het definiëren van wat een linter is. Zoals u in de inleiding hebt gelezen, is een linter een hulpmiddel om u te helpen uw code te verbeteren. Maar op welke manier doet het dat?, Het antwoord is: door het analyseren van uw broncode op zoek naar problemen.
De term linter komt van een tool die oorspronkelijk “lint” heette en die C-broncode analyseerde. De computerwetenschapper Stephen C. Johnson ontwikkelde dit hulpprogramma in 1978 toen hij bij Bell Labs werkte.
zowel de oorspronkelijke lint tool, als eerdere soortgelijke hulpprogramma ‘ s, had het doel van het analyseren van broncode om te komen met compiler optimalisaties. Na verloop van tijd, pluisachtige tools begonnen met het toevoegen van vele andere soorten controles en verificatie.,
echter, zoals we tijdens de introductie hebben vermeld, zijn linters niet beperkt tot gecompileerde talen. Integendeel: we zouden kunnen zeggen dat linters veel waardevoller zijn voor geïnterpreteerde talen omdat er geen compiler is om fouten te detecteren tijdens de ontwikkeltijd.
voordelen van linten
u hebt zojuist de definitie van linter geleerd. Je weet nu ook wanneer dit soort gereedschap werd uitgevonden, en door wie. Je hebt waarschijnlijk al een algemeen idee van wat een linter voor je code kan doen., Maar in meer praktische termen, wat zijn de voordelen die dit soort tool kan bieden? Hier volgen enkele:
- minder fouten in de productie
- leesbare, onderhoudbare en consistentere code
- minder discussies over codestijl en esthetische keuzes tijdens codebeoordelingen
- objectieve meting van codekwaliteit
- veiliger en performanter code
in de volgende paragraaf worden enkele van de soorten verificaties behandeld die linters biedt. Na het lezen van het, zult u begrijpen hoe linters bieden de voordelen hierboven.,
soorten controles Linters bieden
zoals u zojuist hebt gelezen, de oorspronkelijke lint tool geanalyseerd code om optimalisaties voor compilers mogelijk te maken, maar na verloop van tijd, meer geavanceerde en complete tools werden vrijgegeven. Tegenwoordig hebben we talloze verschillende linters, die vele soorten controles bieden. Laten we er snel een paar doornemen.
syntaxfouten
het meest elementaire en meest vitale type controles dat een linter kan leveren zijn syntaxfoutverificatie als het gaat om JavaScript en andere geïnterpreteerde talen., Ontwikkelaars moeten niet eens push code naar de hoofdlijn zonder het passeren van syntaxis verificaties.
een manier om dit te bereiken is door pre-commit hooks te gebruiken die voorkomen dat gebruikers hun code pushen wanneer de linter verificatie aangeeft dat er problemen zijn met de code.
Codestandaarden therapietrouw
een ander essentieel Type controle dat linters levert, is het naleven van coderingsstandaarden. Sommige mensen zouden dit afdoen als een puur esthetische zorg, maar ze zouden het mis hebben., Het hebben van één consistente codeerstijl is voordelig voor het verminderen van de cognitieve belasting van het lezen, het begrijpen, en het handhaven van code. Een codebase met een consistente codestijl zal gemakkelijker te begrijpen zijn, en de ontwikkelaars die het gebruiken zullen minder waarschijnlijk bugs introduceren.
daarom zijn er linters die gespecialiseerd zijn in het verifiëren van codebases voor het naleven van codestijlen. Sommige tools zijn eigenwijs, dat wil zeggen ze komen met een vooraf gedefinieerde set van regels en conventies die niet kunnen worden veranderd., Aan de andere kant zijn er tools die zeer configureerbaar kunnen zijn, waardoor de gebruiker de tool kan aanpassen aan hun favoriete codeerstijlen.
mogelijke problemen (ook bekend als code Smells)
Code smells zijn tekenen dat er iets mis is met uw code. Het is verbazingwekkend handig om een tool te hebben om die tekens automatisch te detecteren, zodat je ze verder kunt onderzoeken, indien nodig.
bijvoorbeeld, veel mensen—waaronder ik—beschouwen lange functies als een code geur. Zo zou je je linter kunnen configureren om functies te detecteren die langer zijn dan een bepaald aantal regels.,
een andere vaak geciteerde code geur is code die te complex is. Maar we hebben het niet over complexiteit op een subjectieve manier, maar een zeer objectieve. Cyclomatische complexiteit is een handige codetabel die het aantal mogelijke uitvoeringspaden binnen een functie vertegenwoordigt. Linters kan de cyclomatische complexiteit van uw functies berekenen en markeren die hoger zijn dan een bepaalde drempel.
beveiligingscontroles
Last but not least hebben we Beveiliging, wat zonder twijfel het meest kritische facet is van een moderne applicatie, vooral een web app., Als je het verkeerd hebt, kunnen de gevolgen catastrofaal zijn, niet alleen met betrekking tot geld en reputatie, maar zelfs juridische (denk aan GDPR en soortgelijke regelgeving.)
gelukkig is dit een ander gebied waar linters van nut kan zijn, omdat er hulpmiddelen zijn die belangrijke beveiligingsverificatie bieden.
statische analyse begrijpen
we hebben uitgelegd wat linters zijn en waarom ze nuttig zijn. Ook hebben we de belangrijkste soorten linters behandeld. U bent nu klaar om te leren over enkele voorbeelden van linting tools voor een verscheidenheid aan toepassingen en target programmeertalen.,
voordat we daar komen, laten we echter een korte uitweiding nemen om te praten over statische analyse, aangezien deze term in de volgende sectie verschijnt, en we het nog niet gedefinieerd hebben.
dus, wat is statische analyse? U kunt statische analyse zien als een pre-run debug. Statische analyse bestaat uit het gebruik van tools die uw broncode analyseren op zoek naar fouten, gebrek aan naleving van regels of conventies, of andere potentiële problemen.
de volgende sectie toont voorbeelden van linters gecategoriseerd op basis van het type verificatie dat ze uitvoeren., Inzendingen gecategoriseerd onder statische analyse verwijzen meestal naar de eerste en derde soorten linters die in de bovenstaande sectie worden vermeld.
voorbeelden van Linters
laten we nu kort enkele voorbeelden van linters noemen. We zullen voorbeelden tonen voor verschillende programmeertalen, gecategoriseerd door het type controle dat ze bieden. Houd er rekening mee dat sommige tools meer dan één type verificatie kunnen bieden, dus dat is de reden dat sommige tools in meer dan één categorie verschijnen.,>
Linters voor Beveiliging
- Gosec voor Go
- Bandit voor Python
- LGTM voor verschillende talen, zoals JavaScript, Python, en C#
Linters voor Coding Conventions / Codering Opmaak
- Mooier voor JavaScript
- Rubocop voor Ruby
- StyleCop voor C#
Linters in JavaScript: Hoe te beginnen
Voordat wij pakken het artikel, wij geven je een korte maar praktische gids over hoe je aan de slag met pluizen in JavaScript., Aangezien we het over JavaScript hebben, is het geen verrassing dat er veel tools voor u zijn om uit te kiezen. Omdat we er een moeten kiezen, gaan we voor ESLint.
Eslint installeren
eerste dingen eerst: laten we de linter installeren. ESLint wordt geïnstalleerd via npm, wat betekent dat u Node moet hebben.js geïnstalleerd. Als je het nog niet hebt, download het en installeer het, zodat we kunnen doorgaan.
met Node.js geïnstalleerd, we zijn klaar om eslint te installeren via npm., the following command:
1
|
npm install eslint –global
|
However, this isn’t the approach recommended in their documentation., In plaats daarvan moet u waarschijnlijk eslint installeren op een per-project basis.,ory for your project:
1
|
mkdir eslint-sample-app
|
Then, cd into the directory and run the command below to create a package.,json-bestand (het zal nodig zijn op de weg.)
1
|
npm init
|
Npm zal u vragen een aantal vragen., Druk gewoon op enter om het standaard antwoord te gebruiken voor alle van hen.,heeft, door het uitvoeren van:
1
|
npx eslint –init
|
Bij het uitvoeren van de bovenstaande commando, is ESLint zullen u vragen, wat doe je het voor wil gebruiken., De opties zijn: om alleen de syntaxis te controleren, om de syntaxis te controleren en problemen te vinden, en om de syntaxis te controleren, problemen te vinden en code stijl af te dwingen.
laten we gaan met de laatste optie. Gebruik de pijltjestoetsen om opties te wijzigen en ENTER om te bevestigen. ESLint zal dan willen weten welke soorten modules uw project gebruikt. De antwoorden zijn:
- JavaScript-modules
- CommonJS-Modules
- geen van deze
kies JavaScript-modules en ga verder. Daarna wordt u gevraagd welk raamwerk uw project gebruikt., De antwoorden, nogmaals, zijn drie:
- React
- Vue
- geen van deze
in ons geval kiezen we de” none ” optie. De volgende vraag is een “ja / nee” vraag: maakt uw project gebruik van Typescript? Druk op ” N ” Voor Nee. Daarna, het vraagt u of uw code draait in de browser of in knooppunt.
ESLint vraagt u vervolgens hoe u een manier kunt kiezen om een codestijl voor uw project te definiëren. Het biedt u drie mogelijkheden: het gebruik van een populaire stijlgids, het beantwoorden van vragen over uw stijlvoorkeuren, of het inspecteren van uw .js bestanden. Kies de eerste optie., Dan wordt je gevraagd om te kiezen tussen drie stijlen: AirBNB, Standard en Google. Voor deze tutorial, laten we kiezen Google.
ESLint zal dan vragen welk formaat u verkiest voor uw configuratie. Kies YAML. Tot slot, wanneer u wordt gevraagd of u de geselecteerde codestijl wilt downloaden met behulp van npm, antwoord “ja.”
Eslint gebruiken om een bestand te controleren
nadat het downloaden is voltooid, bent u klaar om ESLint te gebruiken om een bestand te controleren. Maar daarvoor heb je een dossier nodig om te controleren. Als je toevallig een .js bestand opknoping rond ergens, kopieer het in uw project directory., Als alternatief kun je deze repository klonen, die een enkel bestand bevat, en het gebruiken voor je testen.,
om het bestand Te controleren, gebruik je het volgende commando:
JavaScript
1
|
npx eslint pad-naar-uw-bestand.,js
|
Dit is het resultaat dat ik krijg van het uitvoeren van het commando gericht op de begroeting.,js-bestand dat u kunt downloaden via de repository op GitHub:
1
2
3
4
5
6
|
F:\demos\eslint-demo\greeter.,js
2: 3 error Missing jsdoc comment require-jsdoc
3:1 error deze regel heeft een lengte van 86. Maximaal toegestaan is 80 max-len
10: 4 fout onverwacht’ this ‘ no-invalid-this
✖ 3 Problemen (3 fouten, 0 waarschuwingen)
|
zoals u kunt zien, heb ik drie fouten en geen waarschuwingen.
Wat Is een Linter? Een geweldige Tool voor je Toolbelt
In dit bericht hebben we het concept van een linter tool onderzocht. Nu heb je een goed idee van wat linters zijn en waarom je er een zou moeten adopteren., Daarnaast heb je geleerd over verschillende soorten linter-tools en voorbeelden van elke categorie, gericht op verschillende programmeertalen.
naast dat alles, weet je nu hoe je aan de slag kunt met een populaire linting tool voor JavaScript: ESLint.
Wat zijn de volgende stappen?, Er zijn verschillende dingen die u kunt leren hoe u het volgende moet doen:
- regels uitschakelen
- een regel inschakelen als waarschuwing of een fout
- integreer linting in uw bouwproces
- geavanceerde configuratieoptie
- maak uw aangepaste regels
u kunt natuurlijk ook experimenteren met andere linters. Alleen maar omdat we eslint hebben gekozen voor deze gids, dat betekent niet dat je moet vast komen te zitten met het.
ten slotte, vergeet niet dat linten, hoewel verbazingwekkend waardevol, is gewoon een ander wapen in je arsenaal., Je moet niet vergeten over geautomatiseerde testen, code review, refactoring, en vele andere praktijken, technieken, en tools tot uw beschikking in de nooit eindigende strijd tegen chaos in uw codebase.
en van alle praktijken, technieken en tools die u kunt gebruiken om uw codebase beter te maken, kunnen we het niet helpen om end-to-end-tests uit te voeren, wat een vaak over het hoofd gezien type testen is. En dat is jammer. Met de juiste tool om u te helpen, kwaliteit end-to-end testen kan een krachtige bondgenoot in uw strijd tegen code entropie.