Автор (ы) | Стивен К. Джонсон |
---|---|
Разработчик (и) | ATT Bell Лаборатории |
Первый выпуск | 1978; 42 года назад (1978) |
Написано на | C |
Операционная система | Кросс-платформенная |
Доступно на | английском |
Тип | Инструменты статического анализа программ |
lint, или линтер, представляет собой инструмент статического анализа кода, используемый для отметки ошибок программирования, ошибок, стилистических ошибок и подозрительных конструкций. Термин происходит от Unix утилиты, которая исследовала исходный код языка C.
Стивен К. Джонсон, ученый-компьютерщик из Bell Labs, придумал lint в 1978 году во время отладки грамматики yacc, которую он писал для C, и решения проблем переносимости, связанных с переносом Unix на 32-битную машину. Термин «ворс» произошел от названия крошечных кусочков волокна и пуха, сбрасываемых одеждой. В 1979 году lint впервые был использован вне Bell Labs в седьмой версии (V7 ) операционной системы Unix.
За прошедшие годы для многих компиляторов C и C++ были разработаны разные версии lint, и хотя современные компиляторы имеют функции, инструменты, похожие на пух, также расширили свои возможности. Например, Gimpel PC-Lint, используемый для анализа исходного кода C ++, все еще продается, несмотря на то, что он был представлен в 1985 году.
Анализ, выполненный lint-подобные инструменты также могут выполняться оптимизирующим компилятором , который нацелен на создание более быстрого кода. В своей оригинальной статье 1978 года Джонсон обратился к этому вопросу, заключив, что «общее понятие наличия двух программ - хорошее», потому что они концентрировались на разных вещах, тем самым позволяя программисту «сосредоточиться на одной стадии процесса программирования исключительно на алгоритмы, структуры данных и правильность программы, а затем модификация с помощью lint желаемых свойств универсальности и переносимости ».
Даже Хотя современные компиляторы эволюционировали и теперь включают в себя многие исторические функции lint, инструменты, подобные lint, также эволюционировали, чтобы обнаруживать еще более широкий спектр подозрительных конструкций. К ним относятся «предупреждения о синтаксических ошибках, использовании необъявленных переменных, вызовах устаревших функций, соглашениях об интервале и форматировании, неправильном использовании области видимости, неявном падении в операторах переключения, отсутствии заголовков лицензий, [ и]... опасные языковые особенности ".
Lint-подобные инструменты особенно полезны для интерпретируемых языков, таких как JavaScript и Python. Поскольку в таких языках отсутствует этап компиляции, который отображает список ошибок перед выполнением, инструменты также могут использоваться как простые отладчики для общих ошибок (например, синтаксических несоответствий), а также в качестве сложных - найти ошибки, такие как heisenbugs (обращая внимание на подозрительный код как на «возможные ошибки»). Lint-подобные инструменты обычно выполняют статический анализ исходного кода.
Lint-подобные инструменты также были разработаны для других аспектов языка, включая грамматику и руководства по стилям.
Фортран компиляторы, использующие методы сжатия пространства (например, IBM 1130 ) сделали невозможным для компилятора увидеть проблему с: