SlideShare a Scribd company logo
What linters are useful for
frontend code review?
Seva Nechaev
Plan
● Code review goals and checks
● List of linters that can be useful
2
About me
Vsevolod(Seva) Nechaev
● Full stack developer with 5 years of
experience
● Work in Ekahau company
● Do not like code review
3
Code review goals
Goals depend on project.
Possible goals:
1. Ensure code meets standards
2. Find bugs
3. Control technical debt
4. Share knowledge
5. Discuss code-design/UX-design decisions
4
Goal 1: Ensure code meets standards
Can’t be automated:
● Code readability: is hard to understand?
Can be automated:
● Style/Formatting(spaces, empty lines…)
● Variable naming
● Language best practices (const instead of let…)
5
Goal 2: Find bugs
Can’t be automated:
● Mistake in business logic/task description
● UX issues: not best css styles, delays in UI, extra reloading
● Figma design improvements
● Not needed API calls
Hard to find manually:
● Typos
● Too big bundle size
● Test complex business logic with hard data preparation
6
Goal 3: Control technical debt
Actual for backend and frontend:
● Code design (SOLID, design patterns, architecture…)
● Overengineering
Specific for frontend
● Code duplication
7
What can be important to check?
Actual for frontend and backend:
1. Test business logic
2. Style/Formatting(spaces, empty
lines…)
3. Naming
4. Code readability
5. Language best practices (const
instead of let, css styles tips…)
6. Code design (SOLID, design
patterns, architecture…)
7. Overengineering
Frontend-specific:
1. UX issues: not best css styles,
delays in UI
2. Figma design improvements
3. Code duplication
4. Typos
5. Too big bundle size
6. Not needed API calls
8
What do we check usually?
Some things are easier to comment on than others:
1. Formatting: Where are the spaces and line breaks?
2. Naming: Do the field/constant/variable/param/class names conform to
standards?
3. Frontend-specific:
a. UX issues: not best font-size, delays in UI
b. Figma design improvements
c. Typos(but it is easy to miss)
9
Missed checks
Actual for frontend and backend
1. Test complex business logic
2. Code design (SOLID, design patterns, architecture…)
3. Overengineering
Frontend specific:
1. Code duplication
2. Typo
3. Not needed API calls
4. Too big bundle size
10
Code review challenges
Technical challenges:
● Many checks for code review
● Some checks are easier to do than others
● It is hard to do some checks manually
About communication and process challenges
Code review best practices by Trisha Gee(JetBrains)
11
Let’s dive into automation way
Code review technical challenges:
● Many types of checks
● Some checks are easier to do than others
● It is hard to do some checks manually
Possible solutions:
● Automation
● Checklists, PR templates…
● Prioritizing checks and clarifying quality requirements
12
Can be fully or partially automated
1. Style/Formatting(spaces, empty lines…)
2. Code duplication
3. Typos
4. Language best practices (const instead of let, css styles tips…)
5. Too big bundle size
13
Style/Formatting(spaces, empty lines…)
Prettier formatter(npm package prettier)
● Can format code on pre-commit phase
● No empty lines and extra spaces
● No extra semicolon at the end of lines
It is safe to use:
● Does not change code logic, only spaces, empty lines, semicolons…
14
Code duplication
We can run code duplication check on pre-commit/PR event
● SonarQube(paid/free community edition)
● JS Copy/paste detector(free)
○ npm package jscpd
○ Linters based on jscpd
VS code extension
● Duplicated code(based on jscpd)
15
Language best practices
npm package eslint
Plugins for eslint:
● @typescript-eslint/eslint-plugin
● @angular-eslint/eslint-plugin
● eslint-plugin-react
● eslint-plugin-lodash
● eslint-plugin-css-modules
● …
16
Typo
Spell Checker for Code (npm package)
● Cspell
Github-action (based on cspell)
● cspell-action
VS code extension
● Code Spell Checker
17
Too big bundle size
Can be useful when we add new library to the project
VS code extension:
● Import Cost
18
Summary
● It is hard to do all possible code review checks manually
● Let’s use automation tools for some checks:
○ Style/Formatting(spaces, empty lines…)
○ Code duplication
○ Typos
○ Language best practices
○ Bundle size
19
Thank you for your attention!
Demo repository with linters https://github.com/seva-nechaev/linters-frontend
Feel free to connect https://www.linkedin.com/in/seva-nechaev/
20
Not included
● Using automated tests(unit, integration, e2e)
● Code review checks for security, accessibility
● Code review human challenges Code review best practices by Trisha
Gee(JetBrains):
● We are harder on other people’s code than our own
● Different reviewer have different feedback
● Ping pong reviews
● Implementation strategy for adding linters step by step in a safe way
21

More Related Content

Similar to Linters for frontend code review

IDE and Toolset For Magento Development
IDE and Toolset For Magento DevelopmentIDE and Toolset For Magento Development
IDE and Toolset For Magento Development
Abid Malik
 
Test Driven Development with PHP
Test Driven Development with PHPTest Driven Development with PHP
Test Driven Development with PHP
Rogério Vicente
 
Code Review
Code ReviewCode Review
Code Review
Lukas Rypl
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
Adam Culp
 
JetBrains MPS
JetBrains MPSJetBrains MPS
Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development Concepts
Shafiul Azam Chowdhury
 
Why Go Lang?
Why Go Lang?Why Go Lang?
Why Go Lang?
Sathish VJ
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
Maven Logix
 
How aspects clean your code
How aspects clean your codeHow aspects clean your code
How aspects clean your code
Barbara Fusinska
 
Keeping code clean
Keeping code cleanKeeping code clean
Keeping code clean
Brett Child
 
How to write good quality code
How to write good quality codeHow to write good quality code
How to write good quality code
Hayden Bleasel
 
An Introduction To Software Development - Implementation
An Introduction To Software Development - ImplementationAn Introduction To Software Development - Implementation
An Introduction To Software Development - Implementation
Blue Elephant Consulting
 
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Peter Kofler
 
On component interface
On component interfaceOn component interface
On component interface
Laurence Chen
 
sitVIE - No comment?
sitVIE - No comment?sitVIE - No comment?
sitVIE - No comment?
Laurens van Rijn
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
Alexandru Bolboaca
 
Introducing Systems Analysis Design Development
Introducing Systems Analysis Design DevelopmentIntroducing Systems Analysis Design Development
Introducing Systems Analysis Design Developmentbsadd
 
Joomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingJoomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation Testing
Shyam Sunder Verma
 
Code Review
Code ReviewCode Review
Code ReviewRavi Raj
 
Computer programing 111 lecture 2
Computer programing 111 lecture 2Computer programing 111 lecture 2
Computer programing 111 lecture 2
ITNet
 

Similar to Linters for frontend code review (20)

IDE and Toolset For Magento Development
IDE and Toolset For Magento DevelopmentIDE and Toolset For Magento Development
IDE and Toolset For Magento Development
 
Test Driven Development with PHP
Test Driven Development with PHPTest Driven Development with PHP
Test Driven Development with PHP
 
Code Review
Code ReviewCode Review
Code Review
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
JetBrains MPS
JetBrains MPSJetBrains MPS
JetBrains MPS
 
Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development Concepts
 
Why Go Lang?
Why Go Lang?Why Go Lang?
Why Go Lang?
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
 
How aspects clean your code
How aspects clean your codeHow aspects clean your code
How aspects clean your code
 
Keeping code clean
Keeping code cleanKeeping code clean
Keeping code clean
 
How to write good quality code
How to write good quality codeHow to write good quality code
How to write good quality code
 
An Introduction To Software Development - Implementation
An Introduction To Software Development - ImplementationAn Introduction To Software Development - Implementation
An Introduction To Software Development - Implementation
 
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
 
On component interface
On component interfaceOn component interface
On component interface
 
sitVIE - No comment?
sitVIE - No comment?sitVIE - No comment?
sitVIE - No comment?
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Introducing Systems Analysis Design Development
Introducing Systems Analysis Design DevelopmentIntroducing Systems Analysis Design Development
Introducing Systems Analysis Design Development
 
Joomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingJoomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation Testing
 
Code Review
Code ReviewCode Review
Code Review
 
Computer programing 111 lecture 2
Computer programing 111 lecture 2Computer programing 111 lecture 2
Computer programing 111 lecture 2
 

Recently uploaded

Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 

Recently uploaded (20)

Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 

Linters for frontend code review

  • 1. What linters are useful for frontend code review? Seva Nechaev
  • 2. Plan ● Code review goals and checks ● List of linters that can be useful 2
  • 3. About me Vsevolod(Seva) Nechaev ● Full stack developer with 5 years of experience ● Work in Ekahau company ● Do not like code review 3
  • 4. Code review goals Goals depend on project. Possible goals: 1. Ensure code meets standards 2. Find bugs 3. Control technical debt 4. Share knowledge 5. Discuss code-design/UX-design decisions 4
  • 5. Goal 1: Ensure code meets standards Can’t be automated: ● Code readability: is hard to understand? Can be automated: ● Style/Formatting(spaces, empty lines…) ● Variable naming ● Language best practices (const instead of let…) 5
  • 6. Goal 2: Find bugs Can’t be automated: ● Mistake in business logic/task description ● UX issues: not best css styles, delays in UI, extra reloading ● Figma design improvements ● Not needed API calls Hard to find manually: ● Typos ● Too big bundle size ● Test complex business logic with hard data preparation 6
  • 7. Goal 3: Control technical debt Actual for backend and frontend: ● Code design (SOLID, design patterns, architecture…) ● Overengineering Specific for frontend ● Code duplication 7
  • 8. What can be important to check? Actual for frontend and backend: 1. Test business logic 2. Style/Formatting(spaces, empty lines…) 3. Naming 4. Code readability 5. Language best practices (const instead of let, css styles tips…) 6. Code design (SOLID, design patterns, architecture…) 7. Overengineering Frontend-specific: 1. UX issues: not best css styles, delays in UI 2. Figma design improvements 3. Code duplication 4. Typos 5. Too big bundle size 6. Not needed API calls 8
  • 9. What do we check usually? Some things are easier to comment on than others: 1. Formatting: Where are the spaces and line breaks? 2. Naming: Do the field/constant/variable/param/class names conform to standards? 3. Frontend-specific: a. UX issues: not best font-size, delays in UI b. Figma design improvements c. Typos(but it is easy to miss) 9
  • 10. Missed checks Actual for frontend and backend 1. Test complex business logic 2. Code design (SOLID, design patterns, architecture…) 3. Overengineering Frontend specific: 1. Code duplication 2. Typo 3. Not needed API calls 4. Too big bundle size 10
  • 11. Code review challenges Technical challenges: ● Many checks for code review ● Some checks are easier to do than others ● It is hard to do some checks manually About communication and process challenges Code review best practices by Trisha Gee(JetBrains) 11
  • 12. Let’s dive into automation way Code review technical challenges: ● Many types of checks ● Some checks are easier to do than others ● It is hard to do some checks manually Possible solutions: ● Automation ● Checklists, PR templates… ● Prioritizing checks and clarifying quality requirements 12
  • 13. Can be fully or partially automated 1. Style/Formatting(spaces, empty lines…) 2. Code duplication 3. Typos 4. Language best practices (const instead of let, css styles tips…) 5. Too big bundle size 13
  • 14. Style/Formatting(spaces, empty lines…) Prettier formatter(npm package prettier) ● Can format code on pre-commit phase ● No empty lines and extra spaces ● No extra semicolon at the end of lines It is safe to use: ● Does not change code logic, only spaces, empty lines, semicolons… 14
  • 15. Code duplication We can run code duplication check on pre-commit/PR event ● SonarQube(paid/free community edition) ● JS Copy/paste detector(free) ○ npm package jscpd ○ Linters based on jscpd VS code extension ● Duplicated code(based on jscpd) 15
  • 16. Language best practices npm package eslint Plugins for eslint: ● @typescript-eslint/eslint-plugin ● @angular-eslint/eslint-plugin ● eslint-plugin-react ● eslint-plugin-lodash ● eslint-plugin-css-modules ● … 16
  • 17. Typo Spell Checker for Code (npm package) ● Cspell Github-action (based on cspell) ● cspell-action VS code extension ● Code Spell Checker 17
  • 18. Too big bundle size Can be useful when we add new library to the project VS code extension: ● Import Cost 18
  • 19. Summary ● It is hard to do all possible code review checks manually ● Let’s use automation tools for some checks: ○ Style/Formatting(spaces, empty lines…) ○ Code duplication ○ Typos ○ Language best practices ○ Bundle size 19
  • 20. Thank you for your attention! Demo repository with linters https://github.com/seva-nechaev/linters-frontend Feel free to connect https://www.linkedin.com/in/seva-nechaev/ 20
  • 21. Not included ● Using automated tests(unit, integration, e2e) ● Code review checks for security, accessibility ● Code review human challenges Code review best practices by Trisha Gee(JetBrains): ● We are harder on other people’s code than our own ● Different reviewer have different feedback ● Ping pong reviews ● Implementation strategy for adding linters step by step in a safe way 21