15.5.3. Современная lint

15.5.3. Современная lint

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

if (argc < 2)

 fprintf ("usage: %s [ options ] files ", argv[0]);

  /* отсутствует stderr */

Если программа, содержащая этот фрагмент, никогда не вызывается с ошибочным числом аргументов, fprintf(), в которой отсутствует первый аргумент FILE*, также никогда не вызывается.

Программа V7 lint была предназначена для решения таких проблем. Она делала два прохода через все файлы программы, сначала собирая сведения об аргументах функций, а затем сравнивая вызовы функций с собранной информацией. Особые файлы «библиотеки lint» предоставляли сведения о функциях стандартных библиотек, так что их также можно было проверить, lint проверяла также другие сомнительные конструкции.

С появлением в стандартном С прототипов необходимость в lint уменьшилась, но не исчезла совсем, поскольку C89 все еще допускает объявления функций в старом стиле.

extern int some_func(); /* Список аргументов неизвестен */

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

Программа splint (Secure Programming Lint — Lint для безопасного программирования)[186] является современным обновлением lint. Она предусматривает слишком много опций и возможностей, чтобы перечислять их здесь, но ее стоит исследовать.

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

splint является мощным, но сложным инструментом; выделение некоторого времени на изучение его использования, а затем частое его использование поможет сохранить ваш код ясным.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Софтерра: Современная монадология

Из книги Журнал «Компьютерра» № 5 за 7 февраля 2006 года автора Журнал «Компьютерра»

Софтерра: Современная монадология Автор: Сергей Поляков alexei@samara.netВ те давние времена, когда перфосчитка перестала быть основным устройством ввода информации, а ее место заняла клавиатура, когда появились первые мониторы, а о «манипуляторе мышь» никто и слыхом не


Криптоанархия и виртуальные сообщества Современная криптография Тимоти Мэй[19]

Из книги Криптоанархия, кибергосударства и пиратские утопии автора Ладлоу Питер

Криптоанархия и виртуальные сообщества Современная криптография Тимоти Мэй[19] За два прошедших десятилетия в криптографии (сокращенно крип-то), науке создания шифров и кодов, произошла революция. Помимо обычных шифров, полезных, главным образом, для сохранения


Глава 8 Современная система управления проектами Microsoft Project 2007

Из книги Office 2007. Мультимедийный курс автора Мединов Олег

Глава 8 Современная система управления проектами Microsoft Project 2007 В состав пакета Microsoft Office 2007 включено мощное средство управления проектами – программа Microsoft Project 2007. С ее помощью вы можете вести учет, анализ, управлять самыми разными проектами – как относительно небольшими


На что способна современная видеокамера Алексей Поляков

Из книги Цифровой журнал «Компьютерра» № 32 [30.08.2010 — 05.09.2010] автора Журнал «Компьютерра»

На что способна современная видеокамера Алексей Поляков ОпубликованоАлексей Поляков Пылесосить должен пылесос, выживать сок — соковыжималка, а снимать видео видеокамера, не так ли? Однако в наш век гаджетов — устройств, сочетающих в себе все и


Amazon S3, паролемания и современная интерпретация метафоры Неуловимого Джо Сергей Голубицкий

Из книги Цифровой журнал «Компьютерра» № 167 автора Журнал «Компьютерра»

Amazon S3, паролемания и современная интерпретация метафоры Неуловимого Джо Сергей Голубицкий Опубликовано 01 апреля 2013 Amazon S3 (Simple Storage Service) был запущен в 2006 году и с тех пор прочно закрепился в категории де-факто стандарта облачных услуг для