Линт , или линтер , - это инструмент статического анализа кода , используемый для отметки ошибок программирования, ошибок , стилистических ошибок и подозрительных конструкций. [4] Термин происходит от утилиты Unix, которая исследовала исходный код языка C. [1]
Автор (ы) оригинала | Стивен С. Джонсон |
---|---|
Разработчики) | AT&T Bell Laboratories |
Первый выпуск | 26 июля 1978 г . [1] |
Написано в | C |
Операционная система | Кроссплатформенность |
Доступно в | английский |
Тип | Инструменты статического анализа программ |
Лицензия | Первоначально собственность коммерческое программное обеспечение , теперь бесплатное программное обеспечение под BSD-подобной лицензии [2] [3] |
История
Стивен Джонсон , специалист по информатике из Bell Labs , придумал lint в 1978 году, отлаживая грамматику yacc, которую он писал для C, и решая проблемы переносимости, возникающие при переносе Unix на 32-битную машину. [5] [1] Термин «ворс» произошел от названия крошечных кусочков волокна и пуха, сбрасываемых одеждой, поскольку команда должна действовать как ловушка для ворса сушильной машины, обнаруживая небольшие ошибки с большим эффектом. В 1979 году lint впервые был использован вне Bell Labs в седьмой версии ( V7 ) операционной системы Unix .
За прошедшие годы были разработаны различные версии lint для многих компиляторов C и C ++, и хотя современные компиляторы имеют функции, подобные lint, инструменты, подобные lint, также расширили свои возможности. Например, программа Gimpel PC-Lint , используемая для анализа исходного кода C ++, все еще продается, несмотря на то, что она была представлена в 1985 году [5].
Обзор
Анализ, выполняемый инструментами типа lint, также может выполняться оптимизирующим компилятором , который стремится генерировать более быстрый код. В своей оригинальной статье 1978 года Джонсон обратился к этому вопросу, заключив, что «общее понятие наличия двух программ - хорошее», потому что они концентрировались на разных вещах, тем самым позволяя программисту «сосредоточиться на одной стадии процесса программирования исключительно на алгоритмы , структуры данных и правильность программы, а затем модернизировать с помощью lint желаемые свойства универсальности и переносимости ". [1]
Несмотря на то, что современные компиляторы эволюционировали и включают в себя многие исторические функции lint, инструменты, подобные lint, также эволюционировали для обнаружения еще более широкого спектра подозрительных конструкций. К ним относятся «предупреждения о синтаксических ошибках, использовании необъявленных переменных , вызовах устаревших функций, соглашениях о пробелах и форматировании, неправильном использовании области видимости, неявном провале в операторах switch , отсутствующих заголовках лицензий и [и] ... опасных языковых функциях». [6]
Lint-подобные инструменты особенно полезны для языков с динамической типизацией, таких как JavaScript и Python . Поскольку компиляторы таких языков обычно не обеспечивают соблюдение стольких и строгих правил перед выполнением , инструменты линтера также могут использоваться в качестве простых отладчиков для поиска распространенных ошибок (например, синтаксических несоответствий), а также труднообнаруживаемых ошибок, таких как ошибки heisenbug. (обращая внимание на подозрительный код как на «возможные ошибки»). [7] Lint-подобные инструменты обычно выполняют статический анализ исходного кода. [8]
Lint-подобные инструменты были также разработаны для других аспектов языка, включая грамматику и руководства по стилю. [ необходима цитата ]
Специализация
Фортран
Компиляторы Fortran, использующие методы сжатия пространства (например, IBM 1130 ) [9], не позволяли компилятору увидеть проблему с такими строками, как:
- .... DO 120 Дж = 1 . 256 ... 120 ПРОДОЛЖИТЬ
- вот почему могут быть полезны такие программы, как Lint for Fortran [10] . [11] [12]
Смотрите также
- Список инструментов для статического анализа кода
Рекомендации
- ^ a b c d Джонсон, Стивен К. (25 октября 1978 г.). «Линт, средство проверки программ на языке C»: 78–1273. CiteSeerX 10.1.1.56.1841 . Цитировать журнал требует
|journal=
( помощь ) - ^ "UNIX свободен!" . lemis.com. 2002-01-24.
- ^ Бродерик, Билл (23 января 2002 г.). «Уважаемые энтузиасты Unix» (PDF) . Кальдера Интернэшнл . Архивировано из оригинального (PDF) 19 февраля 2009 года.
- ^ «О SublimeLinter» . Сообщество SublimeLinter, редакция 1cecc79c . Проверено 29 марта 2020 .
- ^ а б Моррис, Ричард (1 октября 2009 г.). «Стивен Кертис Джонсон: Компьютерщик недели» . Программное обеспечение Red Gate . Проверено 19 января 2018 .
- ^ «Руководство пользователя Arcanist: Lint» . Фабрикатор . Проверено 19 января 2018 .
- ^ «ESLint - Настраиваемый инструмент линтинга JavaScript (1)» . theCodeCampus . 2015-06-09 . Проверено 21 апреля 2019 .
- ^ Джонс, Найджел (1 мая 2002 г.). «Как использовать Lint для анализа статического кода» . Barr Group .
- ^ Программное обеспечение: считывает исходные операторы в память, отбрасывает строки комментариев, удаляет пробелы, кроме текстовых литералов, объединяет строки продолжения
- ^ Линт для Фортрана : Денис В. Хаскин (2 мая 1988 г.). «Откажитесь от ваших программ FORTRAN». Цифровой обзор . С. 41–47.
аналогично Source Code Analyzer от DEC, .. вступает в игру намного раньше .. до того, как пользователи компилируют свои программы.
- ^ "Архив Комп-Фортран-90" .
Fortran90-lint, для анализа программ Fortran 90, а также другие инструменты, с http://www.cleanscape.net/stdprod/ftp/ftpflint.html
- ^ «Глава 2. Основы использования отладчика» .
Существует общедоступная версия lint для FORTRAN 77 под названием ftnchek.
дальнейшее чтение
- Дарвин, Ян Ф. (1991). Проверка программ на языке C с помощью Lint: Утилита программирования на языке C (пересмотренное издание). США: O'Reilly Media. ISBN 978-0937175309.
- «ЛИНТ (1)» . Руководство по основным командам FreeBSD (FreeBSD 11.2) . 2015-03-23.