Linters
These linters support the ShakaCode Style Guidelines
Autofix!
If you haven't tried the autofix options for eslint
and rubocop
, you're seriously missing out!
- Be SURE you have a clean git status, as you'll want to review what the autofix does to your code!
- Rubocop: Be sure to be in the right directory where you have Ruby files, probably the top level of your Rails project.
rubocop -a
- eslint:: Be sure to be in the right directory where you have JS files.
eslint --fix .
or
npm run lint -- --fix
Autofixing is a HUGE time saver!
ESLint
Configuring Rules
Rules are configured with a 0, 1 or 2. Setting a rule to 0 is turning it off, setting it to 1 triggers a warning if that rule is violated, and setting it to 2 triggers an error.
Rules can also take a few additional options. In this case, the rule can be set to an array, the first item of which is the 0/1/2 flag and the rest are options.
See file .eslintrc for examples of configuration
Specify/Override rules in code
Rules can also be specified in the code file to be linted, as JavaScript comments. This can be useful when the rule is a one-off or is a override to a project-wide rule.
For example, if your file assumes a few globals and you have the no-undef rule set in the .eslintrc file, you might want to relax the rule in the current file.
/* global $, window, angular */
// rest of code
It's also useful to disable ESLint for particular lines or blocks of lines.
console.log('console.log not allowed'); // eslint-disable-line
alert('alert not allowed'); // eslint-disable-line no-alert
/* eslint-disable no-console, no-alert */
console.log('more console.log');
alert('more alert');
/* eslint-enable no-console, no-alert */
You can disable all rules for a line or block, or only specific rules, as shown above.