stringtranslate.com

Линт (программное обеспечение)

Lint — это термин из компьютерной науки , обозначающий инструмент статического анализа кода , используемый для выявления ошибок программирования, багов , стилистических ошибок и подозрительных конструкций. [1] Термин происходит от утилиты Unix , которая проверяла исходный код на языке C. [2] Программа, выполняющая эту функцию, также известна как «linter».

История

Стивен С. Джонсон , компьютерный ученый из Bell Labs , придумал термин «lint» в 1978 году во время отладки грамматики yacc , которую он писал для C, и решения проблем переносимости , возникших при переносе Unix на 32-битную машину. [5] [2] Термин был заимствован из слова lint , крошечных кусочков волокон и пуха, сбрасываемых одеждой, поскольку написанная им команда действовала как ловушка для ворса в сушилке для одежды, захватывая отработанные волокна, оставляя целые ткани нетронутыми. В 1979 году программирование lint впервые было использовано за пределами Bell Labs, в седьмой версии ( V7 ) Unix.

За эти годы были разработаны различные версии lint для многих компиляторов C и C++ , и хотя современные компиляторы имеют функции, подобные lint, lint-подобные инструменты также расширили свои возможности. Например, PC-Lint от Gimpel , представленный в 1985 году и используемый для анализа исходного кода C++, все еще продается. [5]

Обзор

В своей оригинальной статье 1978 года Джонсон изложил свои доводы в пользу создания отдельной программы для обнаружения ошибок, отличной от той, которую он анализировал: «...общая идея наличия двух программ хороша» [потому что они концентрируются на разных вещах, тем самым позволяя программисту] «сосредоточиться на одном этапе процесса программирования исключительно на алгоритмах , структурах данных и корректности программы, а затем позже модернизировать с помощью lint желаемые свойства универсальности и переносимости». [2]

Последующие линтеры

Анализ, выполняемый инструментами типа lint, также может быть выполнен оптимизирующим компилятором , который нацелен на генерацию более быстрого кода. Несмотря на то, что современные компиляторы эволюционировали, включив в себя многие исторические функции lint, инструменты типа lint также эволюционировали, чтобы обнаруживать еще более широкий спектр подозрительных конструкций. К ним относятся «предупреждения об ошибках синтаксиса, использование необъявленных переменных , вызовы устаревших функций, соглашения о пробелах и форматировании, неправильное использование области действия, неявные провалы в операторах switch , отсутствующие заголовки лицензий, [и]...опасные особенности языка». [6]

Инструменты типа lint особенно полезны для динамически типизированных языков, таких как JavaScript и Python . Поскольку интерпретаторы таких языков обычно не применяют столько строгих правил во время выполнения , инструменты типа linter также можно использовать в качестве простых отладчиков для поиска распространенных ошибок (например, синтаксических несоответствий), а также труднообнаруживаемых ошибок, таких как гейзенбаги (привлечение внимания к подозрительному коду как к «возможным ошибкам»). [7] Инструменты типа lint обычно выполняют статический анализ исходного кода. [8]

Инструменты, подобные lint, также были разработаны для других аспектов разработки программного обеспечения: обеспечение соблюдения руководств по грамматике и стилю для исходного кода заданного языка. [ необходима цитата ] Некоторые инструменты (например, ESLint ) также позволяют правилам быть автоматически исправимыми: определение правила может также поставляться с определением преобразования, которое делает правило больше не не срабатывающим. Правила о стиле особенно вероятно поставляются с автоматическим исправлением. Если линтер запущен в режиме «исправить все» для файла, который запускает только правила о форматировании, линтер будет действовать так же, как форматер.

Смотрите также

Ссылки

  1. ^ "О SublimeLinter". Сообщество SublimeLinter, редакция 1cecc79c . Архивировано из оригинала 2023-06-06 . Получено 2020-03-29 .
  2. ^ abcd Джонсон, Стивен С. (25 октября 1978 г.). «Lint, средство проверки программ на языке C». Comp. Sci. Tech. Rep . Bell Labs: 78–1273. CiteSeerX 10.1.1.56.1841 . Архивировано из оригинала 23.01.2022. 
  3. ^ «UNIX свободен!». lemis.com. 2002-01-24.
  4. ^ Бродерик, Билл (23 января 2002 г.). «Дорогие энтузиасты Unix» (PDF) . Caldera International . Архивировано из оригинала (PDF) 19 февраля 2009 г.
  5. ^ ab Моррис, Ричард (1 октября 2009 г.). "Стивен Кертис Джонсон: Компьютерщик недели". Red Gate Software . Получено 19 января 2018 г. .
  6. ^ "Руководство пользователя Arcanist: Lint". Phabricator . Получено 19 января 2018 г.
  7. ^ "ESLint - Настраиваемый инструмент анализа JavaScript (1)". theCodeCampus . 2015-06-09 . Получено 2019-04-21 .
  8. ^ Джонс, Найджел (1 мая 2002 г.). «Как использовать Lint для статического анализа кода». Barr Group .

Дальнейшее чтение