Lint (software) - Lint (software)

Fiapo
Autor (es) original (is) Stephen C. Johnson
Desenvolvedor (s) AT&T Bell Laboratories
lançamento inicial 26 de julho de 1978 ; 43 anos atrás ( 26/07/1978 )
Escrito em C
Sistema operacional Plataforma cruzada
Disponível em inglês
Modelo Ferramentas de análise de programa estático
Licença Originalmente proprietária software comercial , agora software livre sob um BSD-like licença

Lint , ou linter , é uma ferramenta de análise de código estática usada para sinalizar erros de programação, bugs , erros estilísticos e construções suspeitas. O termo se origina de um utilitário Unix que examinou o código-fonte da linguagem C.

História

Stephen C. Johnson , um cientista da computação do Bell Labs , criou o lint em 1978 enquanto depurava a gramática yacc que estava escrevendo para C e lidava com problemas de portabilidade decorrentes da portabilidade do Unix para uma máquina de 32 bits . O termo "fiapos" foi derivado do nome dos pequenos pedaços de fibra e penugem que saem das roupas, já que o comando deveria funcionar como um coletor de fiapos de máquina de secar, detectando pequenos erros com grandes efeitos. Em 1979, o lint foi usado fora do Bell Labs pela primeira vez na sétima versão ( V7 ) do sistema operacional Unix .

Com o passar dos anos, diferentes versões do lint foram desenvolvidas para muitos compiladores C e C ++ e, embora os compiladores modernos tenham funções semelhantes ao lint, as ferramentas semelhantes ao lint também avançaram seus recursos. Por exemplo, o PC-Lint da Gimpel , usado para analisar o código-fonte C ++, ainda está sendo vendido, embora tenha sido lançado em 1985.

Visão geral

A análise realizada por ferramentas do tipo lint também pode ser realizada por um compilador otimizador , que visa gerar código mais rápido. Em seu artigo original de 1978, Johnson abordou esta questão, concluindo que "a noção geral de ter dois programas é boa" porque eles se concentraram em coisas diferentes, permitindo assim que o programador "se concentre em um estágio do processo de programação apenas no algoritmos , estruturas de dados e exatidão do programa, e posteriormente retrofit, com a ajuda do lint, as propriedades desejáveis ​​de universalidade e portabilidade ".

Embora os compiladores modernos tenham evoluído para incluir muitas das funções históricas do lint, ferramentas semelhantes ao lint também evoluíram para detectar uma variedade ainda maior de construções suspeitas. Isso inclui "avisos sobre erros de sintaxe, uso de variáveis ​​não declaradas , chamadas para funções obsoletas, convenções de espaçamento e formatação, uso indevido de escopo, queda implícita em declarações de switch , cabeçalhos de licença ausentes [e] ... recursos de linguagem perigosos".

Ferramentas semelhantes a Lint são especialmente úteis para linguagens tipadas dinamicamente como JavaScript e Python . Como os compiladores dessas linguagens normalmente não impõem tantas regras rígidas antes da execução , as ferramentas linter também podem ser usadas como depuradores simples para encontrar erros comuns (por exemplo, discrepâncias sintáticas), bem como erros difíceis de encontrar, como heisenbugs (chamando a atenção para códigos suspeitos como "possíveis erros"). Ferramentas semelhantes a lint geralmente executam análise estática do código-fonte.

Ferramentas semelhantes a lint também foram desenvolvidas para outros aspectos da linguagem, incluindo guias de gramática e estilo.

Especialização

Fortran

Compiladores Fortran usando técnicas de compressão de espaço (por exemplo, IBM 1130 ) tornaram impossível para o compilador ver o problema com linhas como:

.... DO 120 J = 1 . 256 ... 120 CONTINUAR
É por isso que programas como o Lint for Fortran podem ser úteis.

Veja também

Referências

Leitura adicional