Lint, Lint and Away! Linters for the English Language
If you've used linters before for your code, then you know how useful they can be. This is where grammar meets technology.
You have probably used linters to check the quality of your code, but there is also a myriad of linters available for providing best practice guidance on your writing. In this post, I’ll round up those that I’ve discovered, what they do, and how you can use them.
Alex is a single purpose linter to highlight potentially insensitive words on the basis of gender, race, religion or other potentially insensitive language. Such as:
He started the master node and connected two slaves to it.
In this case, Alex would suggest you replace "he" with "they" and use different terms for "master" and "slave."
Alex is available for:
Just Say No
Another single purpose linter, Just Say No highlights so-called "hedge words," which can often make your writing sound unconvincing, unconfident, or are unnecessary noise. Such as:
React seems like a good fit for your project.
In this case, the linter would suggest you replace "seems" with something more confident, such as:
React is a good fit for your project.
Just Say No is available for:
One of my favorite linters, write good highlights a selection of possible problems with your text, with checks that you can enable or disable. For example:
Just install the package, it’s really easy.
In this case, the linter highlights "just" and "really" as words that weaken the meaning of a sentence.
Write good is available for:
Proselint's use is a little more vague than some of the others on this list, combining learning from a collection of "great" writers (in quote marks as this is subjective) to help you write better prose. It’s a little unclear what checks it undertakes, but as it works more broadly, analyzing whole sentences instead of individual words, it could help you find issues that other linters mentioned so far won’t.
In the centre of the center sat a bunch of cats. What were they doing.
In this case, prose would highlight the inconsistent spelling of center/centre and correct "bunch of cats" to "glaring of cats." Here’s a full list of what it checks for.
Prose lint is available for:
- Python that you can connect to CI systems.
- Vim with Ale and Vim with syntastic
- Visual Studio Code
Moving us into the bigger, more configurable linters, Vale combines a series of checks from other linters, and also lets you add your style definitions to check for, which is useful for in-house style guides. Thanks to this feature, others have contributed custom styles for write-good and proselint meaning you can use Vale to manage a selection of linters for you. You can create global or project level configuration files on a project basis that enable specific checks, and it supports more text formats than many of the linters here.
Because of this extensibility, it’s hard to provide a concrete example of what Vale recommends, but for example:
You are not old enough to be published.
Depending on what you’ve enabled, Vale would suggest replacing "not old enough" with "too young" (A "Litotes" check), and "be published" as an example of passive voice.
Vale is available for:
In a similar vein to Vale, Textlint is pluggable, configurable linter with support for many of the other linters (or similar) mentioned here. By default, nothing is enabled, and you need to create global or project level configuration files for Textlint to check anything. For example:
This is very useful, but how much is TBD.
In this case, the linter highlights "very" and "TBD" (as an unexpanded acronym).
Textlint is available for:
Again Coala combines several linters, aiming to create an all-in-one linter you can use for your entire project, code as well as documentation. You do this by adding "bears" that are other linters packaged to work with Coala, and this includes many of those on this list.
Coala is available for:
And There Are More!
The list above are my favorite and most commonly used linters, and those with good editor support, but naturally, there are more.
- Anorack for checking you use the correct indefinite article.
- Aspell for spell checking as part of your linting process.
- American for correcting those sneaky British spellings.
- IBM Style guide a linter for checking your documents against the IBM writing style guide.
Also, honorable mentions for tools like Hemmingway, Grammarly, Nitpicker, and Langauge Tool which I use on a regular basis, but are not optimized for technical writing and are all standalone tools that you can’t hook up to CI, or use with APIs etc.