stringtranslate.com

Pelusa (software)

Lint es el término informático que designa a una herramienta de análisis de código estático que se utiliza para señalar errores de programación, fallos , errores de estilo y construcciones sospechosas. [1] El término tiene su origen en una utilidad de Unix que examinaba el código fuente del lenguaje C. [2] Un programa que realiza esta función también se conoce como "linter".

Historia

Stephen C. Johnson , un científico informático de Bell Labs , acuñó el término "lint" en 1978 mientras depuraba la gramática yacc que estaba escribiendo para C y lidiaba con problemas de portabilidad derivados de portar Unix a una máquina de 32 bits . [5] [2] El término fue tomado de la palabra lint , los pequeños trozos de fibra y pelusa que desprende la ropa, ya que el comando que escribió actuaría como una trampa de pelusa en una secadora de ropa, capturando fibras de desecho mientras dejaba intactas las telas enteras. En 1979, la programación lint se utilizó fuera de Bell Labs por primera vez, en la séptima versión ( V7 ) de Unix.

A lo largo de los años, se han desarrollado diferentes versiones de lint para muchos compiladores de C y C++ , y si bien los compiladores modernos tienen funciones similares a lint, las herramientas similares a lint también han mejorado sus capacidades. Por ejemplo, PC-Lint de Gimpel , presentado en 1985 y utilizado para analizar el código fuente de C++, todavía está a la venta. [5]

Descripción general

En su artículo original de 1978, Johnson expuso su razonamiento para crear un programa separado para detectar errores, distinto del que analizaba: "...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 los algoritmos , las estructuras de datos y la corrección del programa, y ​​luego adaptar más tarde, con la ayuda de lint, las propiedades deseables de universalidad y portabilidad". [2]

Linters sucesores

El análisis realizado por herramientas similares a lint también puede ser realizado por un compilador optimizador , cuyo objetivo es generar código más rápido. 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. Estas incluyen "advertencias sobre errores de sintaxis, usos de variables no declaradas , llamadas a funciones obsoletas, convenciones de espaciado y formato, uso incorrecto del alcance, errores implícitos en las declaraciones switch , encabezados de licencia faltantes, [y]... características peligrosas del lenguaje". [6]

Las herramientas de tipo lint son especialmente útiles para lenguajes de tipado dinámico como JavaScript y Python . Debido a que los intérpretes de dichos lenguajes normalmente no aplican tantas reglas estrictas durante la ejecución , las herramientas de linter también se pueden utilizar como depuradores simples para encontrar errores comunes (por ejemplo, discrepancias sintácticas) así como errores difíciles de encontrar como los heisenbugs (que llaman la atención sobre código sospechoso como "posibles errores"). [7] Las herramientas de tipo lint generalmente realizan análisis estáticos del código fuente. [8]

También se han desarrollado herramientas similares a Lint para otros aspectos del desarrollo de software: hacer cumplir las guías de gramática y estilo para el código fuente de un lenguaje determinado. [ cita requerida ] Algunas herramientas (como ESLint ) también permiten que las reglas se puedan corregir automáticamente: una definición de regla también puede venir con la definición de una transformación que hace que la regla ya no se active. Es especialmente probable que las reglas sobre estilo vengan con una corrección automática. Si el linter se ejecuta en modo "corregir todo" en un archivo que solo activa reglas sobre formato, el linter actuará como un formateador.

Véase también

Referencias

  1. ^ "Acerca de SublimeLinter". La comunidad de SublimeLinter, revisión 1cecc79c . Consultado el 29 de marzo de 2020 .
  2. ^ abcd Johnson, Stephen C. (25 de octubre de 1978). "Lint, a C Program Checker". Comp. Sci. Tech. Rep . Bell Labs: 78–1273. CiteSeerX 10.1.1.56.1841 . Archivado desde el original el 23 de enero de 2022. 
  3. ^ "¡UNIX es libre!". lemis.com. 24 de enero de 2002.
  4. ^ Broderick, Bill (23 de enero de 2002). "Queridos entusiastas de Unix" (PDF) . Caldera International . Archivado desde el original (PDF) el 19 de febrero de 2009.
  5. ^ ab Morris, Richard (1 de octubre de 2009). «Stephen Curtis Johnson: Geek of the Week». Red Gate Software . Consultado el 19 de enero de 2018 .
  6. ^ "Guía del usuario del arcanista: Lint". Phabricator . Consultado el 19 de enero de 2018 .
  7. ^ "ESLint - Herramienta personalizable para el análisis de errores de JavaScript (1)". theCodeCampus . 2015-06-09 . Consultado el 2019-04-21 .
  8. ^ Jones, Nigel (1 de mayo de 2002). "Cómo utilizar Lint para el análisis de código estático". Barr Group .

Lectura adicional