l’analyse effectuée par des outils de type lint peut également être effectuée par un compilateur d’optimisation, qui vise à générer du code plus rapidement., Dans son article original de 1978, Johnson a abordé cette question en concluant que « la notion générale d’avoir deux programmes est bonne » parce qu’ils se concentraient sur des choses différentes, permettant ainsi au programmeur de « se concentrer à une étape du processus de programmation uniquement sur les algorithmes, les structures de données et l’exactitude du programme, puis de modifier plus tard, à l’aide de lint, les propriétés souhaitables d’universalité et de portabilité ».,
même si les compilateurs modernes ont évolué pour inclure de nombreuses fonctions historiques de lint, les outils de type lint ont également évolué pour détecter une variété encore plus large de constructions suspectes. Il s’agit notamment des » avertissements sur les erreurs de syntaxe, les utilisations de variables non déclarées, les appels à des fonctions obsolètes, les conventions d’espacement et de formatage, l’utilisation abusive de la portée, la fallthrough implicite dans les instructions switch, les en-têtes de licence manquants,…fonctionnalités de langue dangereuses ».
Les outils de type Lint sont particulièrement utiles pour les langages typés dynamiquement comme JavaScript et Python., Parce que les compilateurs de ces langages n’appliquent généralement pas autant de règles strictes avant l’exécution, les outils linter peuvent également être utilisés comme débogueurs simples pour trouver des erreurs courantes (par exemple, des divergences syntaxiques) ainsi que des erreurs difficiles à trouver telles que heisenbugs (attirant l’attention sur le code suspect comme « erreurs possibles »). Les outils de type Lint effectuent généralement une analyse statique du code source.
des outils de type Lint ont également été développés pour d’autres aspects du langage, y compris des guides de grammaire et de style.