Введение

Инструмент для выявления некачественного компьютерного кода

Lint – это термин в информатике, обозначающий инструмент статического анализа кода, используемый для выявления ошибок программирования, дефектов, стилистических ошибок и подозрительных конструкций. Термин происходит от утилиты Unix, которая анализировала исходный код на языке C. Программа, выполняющая эту функцию, также известна как "линтер".

История

Стивен К. Джонсон, учёный-компьютерщик из Bell Labs, придумал термин "lint" в 1978 году, отлаживая грамматику yacc, которую он разрабатывал для языка C, и решая проблемы переносимости, возникшие при переносе Unix на 32-битную машину.

Обзор

В своей оригинальной работе 1978 года Джонсон изложил свои доводы в пользу создания отдельной программы для обнаружения ошибок, отличной от той, которую она анализирует: «сама идея использования двух программ – хорошая» [потому что они сосредоточены на разных задачах, что позволяет программисту] «на одном этапе процесса программирования сосредоточиться исключительно на алгоритмах, структурах данных и корректности программы, а затем, с помощью линтера, добавить желаемые свойства универсальности и переносимости». Инструменты, подобные линтерам, особенно полезны для динамически типизированных языков, таких как JavaScript и Python. Поскольку интерпретаторы этих языков обычно не применяют столько же строгих правил во время выполнения, инструменты линтера также могут использоваться как простые отладчики для поиска распространенных ошибок (например, синтаксических несоответствий), а также трудноуловимых ошибок, таких как ошибки Хайзенберга (привлекая внимание к подозрительному коду как к "потенциальным ошибкам"). Инструменты, подобные линтерам, обычно выполняют статический анализ исходного кода. Также были разработаны инструменты, подобные линтерам, для других аспектов разработки программного обеспечения: обеспечения соответствия грамматическим и стилевым руководствам для исходного кода конкретного языка. Некоторые инструменты (например, ESLint) также позволяют автоматически исправлять правила: определение правила может включать определение преобразования, которое устраняет нарушение этого правила. Правила, касающиеся стиля, особенно часто имеют функцию автоматического исправления. Если линтер запущен в режиме "fix all" для файла, в котором нарушаются только правила форматирования, он будет работать как форматировщик кода.