stringtranslate.com

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

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

История

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

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

Обзор

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

Линтеры-преемники

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

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

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

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

Рекомендации

  1. ^ abcd Джонсон, Стивен С. (25 октября 1978 г.). «Lint, средство проверки программ на языке C». Комп. наук. Тех. Представитель . Лаборатории Белла: 78–1273. CiteSeerX  10.1.1.56.1841 . Архивировано из оригинала 23 января 2022 г.
  2. ^ «UNIX бесплатен!». lemis.com. 24 января 2002 г.
  3. Бродерик, Билл (23 января 2002 г.). «Уважаемые энтузиасты Unix» (PDF) . Кальдера Интернэшнл . Архивировано из оригинала (PDF) 19 февраля 2009 г.
  4. ^ «О SublimeLinter». Сообщество SublimeLinter, редакция 1cecc79c . Проверено 29 марта 2020 г.
  5. ^ Аб Моррис, Ричард (1 октября 2009 г.). «Стивен Кертис Джонсон: Компьютерщик недели». Программное обеспечение «Красные ворота» . Проверено 19 января 2018 г.
  6. ^ «Руководство пользователя Arcanist: Линт» . Фабрикатор . Проверено 19 января 2018 г.
  7. ^ «ESLint — настраиваемый инструмент проверки JavaScript (1)» . theCodeCampus . 09.06.2015 . Проверено 21 апреля 2019 г.
  8. Джонс, Найджел (1 мая 2002 г.). «Как использовать Lint для статического анализа кода». Группа Барр .

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