Линт (программное обеспечение)
Lint — это термин в компьютерной науке , обозначающий инструмент статического анализа кода , используемый для обозначения ошибок программирования, ошибок , стилистических ошибок и подозрительных конструкций. [1] Этот термин происходит от Unix утилиты , которая исследовала языка C. исходный код [2] Программа, выполняющая эту функцию, также известна как «линтер».
История [ править ]
Оригинальный автор(ы) | Стивен С. Джонсон |
---|---|
Разработчик(и) | AT&T Bell Laboratories |
Первоначальный выпуск | 26 июля 1978 г [2] |
Написано в | С |
Операционная система | Кросс-платформенный |
Доступно в | Английский |
Тип | Инструменты статического анализа программ |
Лицензия | Первоначально проприетарное коммерческое программное обеспечение , теперь свободное программное обеспечение под типа BSD. лицензией [3] [4] |
Стивен С. Джонсон , ученый-компьютерщик из Bell Labs , придумал термин «lint» в 1978 году во время отладки грамматики yacc , которую он писал для C, и решения проблем переносимости , возникающих при переносе Unix на 32-битную машину. [5] [2] Этот термин был заимствован из слова « ворс» — крошечных кусочков волокна и пуха, оставленных одеждой, поскольку написанная им команда действовала как ловушка для ворса в сушилке для одежды, улавливая ненужные волокна, оставляя при этом целые ткани неповрежденными. В 1979 году lint-программирование было впервые использовано за пределами Bell Labs, в седьмой версии ( V7 ) Unix.
были разработаны различные версии lint C и C++ За прошедшие годы для многих компиляторов , и хотя современные компиляторы имеют функции, подобные lint, их возможности также расширились. Например, PC-Lint от Gimpel , представленный в 1985 году и используемый для анализа исходного кода C++, до сих пор продается. [5]
Обзор [ править ]
В своей оригинальной статье 1978 года Джонсон изложил свои доводы в пользу создания отдельной программы для обнаружения ошибок, отличной от той, которую он анализировал: «...общая идея наличия двух программ является хорошей» [потому что они концентрируются на разных вещах, тем самым позволяя программисту] «концентрироваться на одном этапе процесса программирования исключительно на алгоритмах , структурах данных и правильности программы, а затем позже модифицировать с помощью lint желаемые свойства универсальности и переносимости». [2]
Линтеры-преемники [ править ]
Анализ, выполняемый lint-подобными инструментами, также может выполняться оптимизирующим компилятором , целью которого является создание более быстрого кода. Несмотря на то, что современные компиляторы эволюционировали и теперь включают в себя многие исторические функции lint, подобные lint инструменты также развиваются для обнаружения еще более широкого спектра подозрительных конструкций. К ним относятся «предупреждения о синтаксических ошибках, использовании необъявленных переменных , вызовах устаревших функций, соглашениях о пробелах и форматировании, неправильном использовании области видимости, неявных провалах в операторах переключения , отсутствующих заголовках лицензий и [и]... опасных функциях языка». [6]
Lint-подобные инструменты особенно полезны для динамически типизированных языков, таких как JavaScript и Python . Поскольку интерпретаторы таких языков обычно не соблюдают стольких и строгих правил во время выполнения , инструменты линтера также можно использовать в качестве простых отладчиков для поиска распространенных ошибок (например, синтаксических несоответствий), а также труднообнаружимых ошибок, таких как ошибки Гейзенбага (например, ошибки Гейзенбага ). привлечение внимания к подозрительному коду как к «возможным ошибкам»). [7] Инструменты, подобные Lint, обычно выполняют статический анализ исходного кода. [8]
Подобные Lint-инструменты также были разработаны для других аспектов разработки программного обеспечения: обеспечения соблюдения грамматики и руководств по стилю для исходного кода данного языка. [ нужна ссылка ] Некоторые инструменты (например, Eslint) также позволяют автоматически исправлять правила: определение правила также может сопровождаться определением преобразования, благодаря которому правило больше не срабатывает. Правила стиля, скорее всего, будут иметь автоматическое исправление. Если линтер запускается в режиме «исправить все» для файла, который запускает только правила форматирования, линтер будет действовать точно так же, как форматтер.
См. также [ править ]
Ссылки [ править ]
- ^ «О SublimeLinter» . Сообщество SublimeLinter, редакция 1cecc79c . Проверено 29 марта 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б с д Джонсон, Стивен К. (25 октября 1978 г.). «Lint, средство проверки программ на языке C» . Комп. наук. Тех. Представитель . Лаборатории Белла: 78–1273. CiteSeerX 10.1.1.56.1841 . Архивировано из оригинала 23 января 2022 г.
- ^ «UNIX бесплатен!» . lemis.com. 24 января 2002 г.
- ^ Бродерик, Билл (23 января 2002 г.). «Уважаемые энтузиасты Unix» (PDF) . Кальдера Интернэшнл . Архивировано из оригинала (PDF) 19 февраля 2009 г.
- ↑ Перейти обратно: Перейти обратно: а б Моррис, Ричард (1 октября 2009 г.). «Стивен Кертис Джонсон: Компьютерщик недели» . Программное обеспечение «Красные ворота» . Проверено 19 января 2018 г.
- ^ «Руководство пользователя Arcanist: Линт» . Фабрикатор . Проверено 19 января 2018 г.
- ^ «ESLint — настраиваемый инструмент проверки JavaScript (1)» . theCodeCampus . 09.06.2015 . Проверено 21 апреля 2019 г.
- ^ Джонс, Найджел (1 мая 2002 г.). «Как использовать Lint для статического анализа кода» . Группа Барр .
Дальнейшее чтение [ править ]
- Дарвин, Ян Ф. (1991). Проверка программ на C с помощью Lint: Утилита программирования на C (пересмотренная ред.). США: О'Рейли Медиа. ISBN 978-0937175309 .
- «ЛИНТ(1)» . Руководство по основным командам FreeBSD (FreeBSD 11.2) . 23 марта 2015 г.