Graham King

Solvitas perambulum

lintswitch: Automatically run pylint / jslint on your code

Summary
Lintswitch is a Bash script designed to streamline the process of linting code by integrating three main components: incron for monitoring file changes, pylint/pep8/jslint for code analysis, and tools like zenity, notify-send, and imagemagick for displaying lint results. By constantly observing and linting code in the background, it allows developers to maintain an uninterrupted workflow unless an error is detected. Installation is simple through GitHub. The tool embraced the Unix philosophy of creating small, loosely coupled parts, moving away from a monolithic approach to a more modular and efficient system.

lintswitch is a small Bash script that connects:

  1. incron which watches your files
  2. pylint, pep8 and jslint, warn you about possible problems in your code.
  3. zentiy, notify-send, and imagemagick, which display the lint result.

Your code is constantly being watched and linted, in the background, without interrupting your workflow, unless there is an error in your code.

Installing it is easy:

git clone git://github.com/grahamking/lintswitch.git
cd lintswitch
./install.sh

It’s on github here: lintswitch at github. Let me know if it’s useful to you.

The story

There’s a story here, about Unix, and software development.

I’ve been wanting something like this for a while. Some months ago I wrote a wxPython program to do this. It worked. Then I read The Art of Unix Programming, and realized I was thinking-in-Windows, by writing one big program. The Unix way is small parts, loosely coupled.

I broke the problem down into sub-problems: I needed:

  1. something to notice when a file changed
  2. something to lint the files
  3. something to display the result

Linting (2), was obvious: pylint, pep8 and jslint (and hopefully more in the future).

For noticing (1) I knew I wanted to use inotify, so incron was perfect.

And for displaying (3), there turned out to be many options. lintswitch uses a combination of Gnome’s notification system, zenity, and rendering text to the root window with imagemagick.

I didn’t need a wxPython GUI. All I needed was some bash script to glue the parts together. And that is lintswitch.