Autor (es) original (es) | Stephen C. Johnson |
---|---|
Desarrollador (es) | Laboratorios AT&T Bell |
Versión inicial | 26 de julio de 1978 [1] |
Escrito en | C |
Sistema operativo | Multiplataforma |
Disponible en | inglés |
Escribe | Herramientas de análisis de programas estáticos |
Licencia | Originalmente propiedad de software comercial , ahora el software libre bajo un BSD licencia [2] [3] |
Lint , o linter , es una herramienta de análisis de código estático que se utiliza para marcar errores de programación, errores , errores de estilo y construcciones sospechosas. [4] El término se origina en una utilidad de Unix que examinó el código fuente del lenguaje C. [1]
Stephen C. Johnson , un científico informático de Bell Labs , ideó lint en 1978 mientras depuraba la gramática yacc que estaba escribiendo para C y se ocupaba de los problemas de portabilidad derivados de la migración de Unix a una máquina de 32 bits . [5] [1] El término "pelusa" se deriva del nombre de los pequeños trozos de fibra y pelusa que desprende la ropa, ya que el comando debería actuar como una trampa de pelusa de una secadora, detectando pequeños errores con grandes efectos. En 1979, lint se usó fuera de Bell Labs por primera vez en la séptima versión ( V7 ) del sistema operativo Unix .
A lo largo de los años, se desarrollaron diferentes versiones de lint para muchos compiladores de C y C ++ y, aunque los compiladores de hoy en día tienen funciones similares a lint, las herramientas similares a lint también han avanzado sus capacidades. Por ejemplo, PC-Lint de Gimpel , que se utiliza para analizar el código fuente de C ++, todavía se vende a pesar de que se introdujo en 1985. [5]
El análisis realizado por herramientas similares a pelusa también puede ser realizado por un compilador de optimización , que tiene como objetivo generar código más rápido. En su artículo original de 1978, Johnson abordó este tema, concluyendo que "la noción general de tener dos programas es buena" porque se concentran en cosas diferentes, lo que permite al programador "concentrarse en una etapa del proceso de programación únicamente en el algoritmos , estructuras de datos y corrección del programa, y luego modernizar, con la ayuda de lint, las propiedades deseables de universalidad y portabilidad ". [1]
Aunque los compiladores modernos han evolucionado para incluir muchas de las funciones históricas de lint, las herramientas similares a lint también han evolucionado para detectar una variedad aún más amplia de construcciones sospechosas. Estos incluyen "advertencias sobre errores de sintaxis, uso de variables no declaradas , llamadas a funciones obsoletas, convenciones de espaciado y formato, uso indebido del alcance, fallas implícitas en declaraciones de cambio , encabezados de licencia faltantes, [y] ... características de lenguaje peligrosas". [6]
Las herramientas tipo pelusa son especialmente útiles para lenguajes de tipado dinámico como JavaScript y Python . Debido a que los compiladores de dichos lenguajes generalmente no imponen tantas reglas estrictas antes de la ejecución , las herramientas de linter también se pueden usar como depuradores simples para encontrar errores comunes (por ejemplo, discrepancias sintácticas), así como errores difíciles de encontrar como heisenbugs. (llamando la atención sobre el código sospechoso como "posibles errores"). [7] Las herramientas tipo pelusa generalmente realizan análisis estáticos del código fuente. [8]
También se han desarrollado herramientas tipo pelusa para otros aspectos del lenguaje, incluidas guías de estilo y gramática. [ cita requerida ]
Los compiladores de Fortran que utilizan técnicas de compresión de espacio (por ejemplo, IBM 1130 ) [9] hicieron imposible que el compilador vea el problema con líneas como:
|journal=
( ayuda )similar al Source Code Analyzer de DEC, ... entra en juego mucho antes ... antes de que los usuarios compilen sus programas
Fortran90-lint, para el análisis del programa Fortran 90, también otras herramientas, de
http://www.cleanscape.net/stdprod/ftp/ftpflint.html
Existe una versión de dominio público de lint para FORTRAN 77 llamada ftnchek