Пожалуйста, пометьте вопросы об инструментах статического анализа "статический анализ", если они не касаются утилиты Lint. Одним из первых статических анализаторов была утилита Lint, появившаяся в 1979 году в составе дистрибутива Unix 7. Lint изначально использовался для анализа исходного кода C. Эта команда была настолько популярна, что слово "lint" стало общим термином для инструментов статического анализа.

Вступление

Первая версия Lint была разработана Стивеном Джонсоном в Bell Laboratories с целью обнаружения ошибок, которые в противном случае могли бы остаться незамеченными в программах на языке C. Следующее - из аннотации к "Lint, средство проверки программ на языке C", написанной Джонсоном в 1978 году.

Lint - это команда, которая исследует исходные программы C, обнаруживая ряд ошибок и неясностей. Он обеспечивает соблюдение правил типов C более строго, чем компиляторы C. Его также можно использовать для обеспечения соблюдения ряда ограничений переносимости, связанных с перемещением программ между разными машинами и / или операционными системами. Другой вариант выявляет ряд расточительных или подверженных ошибкам конструкций, которые, тем не менее, строго говоря, законны.

Команда Джонсона Lint впервые появилась (за пределами Bell Laboratories) в 1979 году как часть дистрибутива Unix 7. Версия команды все еще существует сегодня, а описание утилиты можно найти на страницах руководства FreeBSD:

Утилита lint пытается обнаружить особенности названных программных файлов C, которые могут быть ошибочными, непереносимыми или расточительными. Он также выполняет более строгую проверку типов, чем компилятор C.

Среди возможных проблем, которые в настоящее время отмечены, являются недостижимые операторы, циклы, не входящие в верхнюю часть, объявленные и неиспользуемые переменные и логические выражения с постоянными значениями. Вызовы функций проверяются на несоответствия, такие как вызовы функций, которые возвращают значения в одних местах, а не в других, функции, вызываемые с различным количеством аргументов, вызовы функций, передающие аргументы типа, отличного от типа, который функция ожидает получить, функции значения которых не используются, и вызовы функций, не возвращающих значений, которые используют несуществующее возвращаемое значение функции.

В первую очередь из-за популярности исходной команды Lint термин "lint" стал обозначать инструменты статического анализа в целом. Сегодня существует множество инструментов, некоторые из которых включают:

Открытый источник:

Коммерческий:

Использование тега "lint" при переполнении стека

Используйте этот тег только для вопросов, связанных с различными инструментами Lint от Gimpel Software.

Пожалуйста, воздержитесь от использования этого тега по общим вопросам статического анализа. Вопросы, касающиеся статического анализа кода и использования инструментов статического анализа, должны использовать статический анализ.

Ссылки

Карпов, Андрей, Parallel Lint: Проверка параллельных программ, Мир разработки программного обеспечения доктора Добба, 2009.

Джонсон, SC, Линт, верификатор программы C, Bell Laboratories, Мюррей-Хилл, Нью-Джерси, 1978.

Форумы Unix и Linux, Руководство по основнымкомандам BSD, lint - средство проверки программ C, 2001.