Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Инструмент для выявления некачественного компьютерного кода
Tool to flag poor computer code
Lint – это термин в информатике, обозначающий инструмент статического анализа кода, используемый для выявления ошибок программирования, дефектов, стилистических ошибок и подозрительных конструкций. Термин происходит от утилиты Unix, которая анализировала исходный код на языке C. Программа, выполняющая эту функцию, также известна как "линтер".
Lint is the computer science term for a static code analysis tool used to flag programming errors, bugs, stylistic errors and suspicious constructs. The term originates from a Unix utility that examined C language source code. A program which performs this function is also known as a "linter".
История
Стивен К. Джонсон, учёный-компьютерщик из Bell Labs, придумал термин "lint" в 1978 году, отлаживая грамматику yacc, которую он разрабатывал для языка C, и решая проблемы переносимости, возникшие при переносе Unix на 32-битную машину.
Stephen C. Johnson, a computer scientist at Bell Labs, came up with the term "lint" in 1978 while debugging the yacc grammar he was writing for C and dealing with portability issues stemming from porting Unix to a 32 bit machine.
Обзор
В своей оригинальной работе 1978 года Джонсон изложил свои доводы в пользу создания отдельной программы для обнаружения ошибок, отличной от той, которую она анализирует: «сама идея использования двух программ – хорошая» [потому что они сосредоточены на разных задачах, что позволяет программисту] «на одном этапе процесса программирования сосредоточиться исключительно на алгоритмах, структурах данных и корректности программы, а затем, с помощью линтера, добавить желаемые свойства универсальности и переносимости». Инструменты, подобные линтерам, особенно полезны для динамически типизированных языков, таких как JavaScript и Python. Поскольку интерпретаторы этих языков обычно не применяют столько же строгих правил во время выполнения, инструменты линтера также могут использоваться как простые отладчики для поиска распространенных ошибок (например, синтаксических несоответствий), а также трудноуловимых ошибок, таких как ошибки Хайзенберга (привлекая внимание к подозрительному коду как к "потенциальным ошибкам"). Инструменты, подобные линтерам, обычно выполняют статический анализ исходного кода. Также были разработаны инструменты, подобные линтерам, для других аспектов разработки программного обеспечения: обеспечения соответствия грамматическим и стилевым руководствам для исходного кода конкретного языка. Некоторые инструменты (например, ESLint) также позволяют автоматически исправлять правила: определение правила может включать определение преобразования, которое устраняет нарушение этого правила. Правила, касающиеся стиля, особенно часто имеют функцию автоматического исправления. Если линтер запущен в режиме "fix all" для файла, в котором нарушаются только правила форматирования, он будет работать как форматировщик кода.
In his original 1978 paper Johnson stated his reasoning in creating a separate program to detect errors, distinct from that which it analyzed: " the general notion of having two programs is a good one" [because they concentrate on different things, thereby allowing the programmer to] "concentrate at one stage of the programming process solely on the algorithms, data structures, and correctness of the program, and then later retrofit, with the aid of lint, the desirable properties of universality and portability". Lint like tools are especially useful for dynamically typed languages like JavaScript and Python. Because the interpreters of such languages typically do not enforce as many and as strict rules during execution, linter tools can also be used as simple debuggers for finding common errors (e. g. syntactic discrepancies) as well as hard to find errors such as heisenbugs (drawing attention to suspicious code as "possible errors"). Lint like tools generally perform static analysis of source code. Lint like tools have also been developed for other aspects of software development: enforcing grammar and style guides for given language source code. Some tools (such as Eslint) also allow rules to be auto fixable: a rule definition can also come with the definition of a transform that makes the rule no longer not triggered. Rules about style are especially likely to come with an auto fix. If the linter is run in "fix all" mode on a file that triggers only rules about formatting, the linter will act just like a formatter.