Lint Your Scripts: Why It Matters

Sample lint checking from the Atom.io Lint package.

Programmers know that debugging code is simply part of their job description. While this debugging process tends to get more streamlined as a programmer gains experience, it can still be tedious and result in many hours spent combing meticulously through code looking for that one variable that escaped initialization or the one construct that is non-portable. Not only does an increase in the programmer's frustration level result, debugging can be a costly endeavor. 

Lint: An Impartial and Thorough Tool

Utilizing lint, a simple yet powerful tool, enables a programmer to instantly identify areas of code that might contain mistakes, effectively reducing the time spent taking apart each individual line. Similar to a compiler, lint looks at line of code that is generated and alerts you to areas that could possibly deliver results that are not consistent with the compiler that is used. While lint can often produce almost as many warnings as there are lines of code, it's important to remember that these are only possible errors. By targeting specific areas within the lines of code, lint allows programmers to focus only on that particular piece of code. 

Possible Errors That Lint Targets 

The list below is far from exhaustive as lint checks code based on both the version of the tool that is used as well as its implementation. Some examples of items that lint will warn on include: 

  • assignments that are suspicious
  • code that is unreachable
  • variable types that are mismatched
  • indexing that goes beyond the bounds of an array
  • constructs that are not portable
  • null pointers that are de-referenced
  • variables that are not being used
  • combinations of data types that could be dangerous
  • uninitialized variables that might be in use
  • unnecessary or duplicate header files

Long-Term Effects of Using Lint

Regardless of the size team that is developing a script, documentation of their efforts and the assurance of a uniform code structure are vital to the longevity and effectiveness of the code itself. Maintenance on scripts tends to be sporadic at best. Developing them within a prescribed format helps make maintenance more streamlined and less time consuming while fostering a sense of continuity that can be far reaching. New team members, as well as the code's original creator -- who has likely forgotten the specifics of the code or why it was written a particular way -- can easily pick it back up again. A bit of extra time and effort in the beginning of the coding process using lint ensures that scripts are standardized. This helps maximize time spent with them in the future as they are tweaked to meet present needs.