mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

      LINT(1)                                                 LINT(1)

      НАЗВАНИЕ
              lint - верификатор C-программ

      СИНТАКСИС
       lint  [-a] [-b] [-h] [-u] [-v] [-x] [-l библ] [-n] [-p] [-c] [-o библ]
                  файл ...

      ОПИСАНИЕ
              Команда lint пытается обнаружить в заданных файлах, со-
              держащих C-программы, конструкции,  которые,  возможно,
              являются  ошибочными, немобильными или излишними. Более
              строго, чем при компиляции, выполняется проверка  соот-
              ветствия  типов. Среди обнаруживаемых дефектов - недос-
              тижимые операторы; циклы, в которые входят не с начала;
              описанные, но не используемые  автоматические  перемен-
              ные;  логические  выражения  с константными значениями.
              Кроме того, проверяется использование функций и обнару-
              живаются функции, возвращающие значения в одних местах,
              но не возвращающие в других; функции, вызываемые с раз-
              личным числом аргументов или с аргументами  разных  ти-
              пов; функции, значения которых не используются, и функ-
              ции, значения которых не возвращаются, но используются.

              Файлы-аргументы, имена которых оканчиваются на .c, счи-
              таются исходными C-файлами.  Аргументы,  имена  которых
              оканчиваются  на  .ln, считаются результатом предыдущих
              вызовов lint с использованием опций -c  или  -o.  Файлы
              .ln аналогичны об ектным (.o) файлам, которые создаются
              командой  cc(1),  если в качестве входных файлов заданы
              .c файлы. Файлы с другими расширениями  игнорируются  с
              выдачей предупреждения.

              Программа lint обрабатывает все .c, .ln и llib-lбибл.ln
              (заданные указанием -l библ) файлы в том порядке, в ко-
              тором  они перечислены в командной строке. По умолчанию
              lint подсоединяет к концу списка файлов свою  стандарт-
              ную  библиотеку C-программ llib-lc.ln. Однако, если ис-
              пользуется опция -p, вместо стандартной  подсоединяется
              мобильная C-библиотека программы lint llib-port.ln. Ес-
              ли  опция  -c  не указана, второй проход lint проверяет
              этот список файлов на взаимную совместимость. В  случае
              задания  опции -c файлы .ln и llib-lбибл.ln игнорируют-
              ся.

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

              -a   Не выдавать сообщения о присваиваниях  long-значе-
                   ний переменным, не специфицированным как long.

              -b   Не  выдавать  сообщения  о недостижимых операторах
                   break.  [Программы,  сгенерированные  при   помощи
                   lex(1)  или  yacc(1) обычно содержат большое число
                   таких операторов.]

              -h   Не применять набор эвристических тестов,  предназ-
                   наченных  для  того,  чтобы  попытаться  "поймать"
                   ошибки, улучшить стиль и  сделать  программу  ком-
                   пактнее.

              -u   Не выдавать сообщения о функциях и  внешних  пере-
                   менных, используемых, но не определенных или опре-
                   деленных, но не используемых. (Эта опция  полезна,
                   когда при обращении к lint  задается  подмножество
                   файлов, составляющих одну большую программу.)

              -v   Не выдавать сообщения о неиспользуемых  параметрах
                   функций.

              -x   Не сообщать о внешних переменных, которые нигде не
                   используются.

              Следующие аргументы изменяют поведение программы lint:

              -l библ
                   Подключить  lint-библиотеку  llib lбибл.ln.   Если
                   вставить  в командную строку -lm, будет подключена
                   lint-версия математической библиотеки  llib-lm.ln.
                   Этот аргумент не подавляет использование библиоте-
                   ки llib-lc.ln. Данные lint библиотеки должны нахо-
                   диться в надлежащем каталоге [см. ниже ФАЙЛЫ]. Оп-
                   цию можно использовать, чтобы сослаться на локаль-
                   ные  lint-библиотеки;  она  удобна  при разработке
                   проектов, состоящих из многих файлов.

              -n   Не проверять совместимость со стандартной или  мо-
                   бильной lint-библиотеками.

              -p   Попытаться проверить возможность переноса на  дру-
                   гие диалекты языка C (IBM и GCOS). В  сочетании  с
                   более строгим  контролем  данная  опция  сокращает
                   имена, не являющиеся внешними, до восьми символов,
                   а внешние имена - до шести символов одного  разме-
                   ра.

              -c   Если задана эта опция,  lint  генерирует  .ln-файл
                   для каждого .c-файла, указанного в командной стро-
                   ке. Эти .ln-файлы являются результатом только пер-
                   вого прохода программы lint; проверка совместимос-
                   ти функций в них не выполнена.

              -o библ
                   Создает lint-библиотеку  с  именем  llib-lбибл.ln.
                   Опция  -c  отменяет  действие  опции -o. Созданная
                   lint-библиотека - это файл,  который  подается  на
                   вход  второму проходу lint. Действие опции -o зак-
                   лючается в простом сохранении данного файла в ука-
                   занной lint-библиотеке. Чтобы сформировать библио-
                   теку без посторонних сообщений, следует  использо-
                   вать опцию -x. Опция -v удобна, если исходные фай-
                   лы для lint-библиотеки состоят из описаний внешних
                   интерфейсов (таким способом, например, создан файл
                   llib-lc).  Аналогичный эффект может быть достигнут
                   при помощи "lint-комментариев" (см. ниже).

              Распознаются также опции -D, -U, -I  команды  cpp(1)  и
              опции  -g, -O команды cc(1), если они заданы в виде от-
              дельных аргументов. Опции -g и -O игнорируются,  однако
              сама  возможность  их  задания делает поведение команды
              lint в большей мере похожим на cc(1).  Остальные  опции
              игнорируются  с предупреждающими сообщениями. Определен
              символ препроцессора lint, что позволяет  изменять  или
              делать невидимыми для lint некоторые сомнительные фраг-
              менты программы. Поэтому lint следует рассматривать как
              зарезервированное  ключевое  слово  во всех программах,
              которые предполагается проверять при помощи lint.

              На поведение программы lint влияют некоторые  специаль-
              ные комментарии в тексте исходной C-программы:

              /*NOTREACHED*/
                   В соответствующих точках блокирует  диагностику  о
                   недостижимых операторах. (Этот комментарий  обычно
                   помещается сразу после обращений к  функциям  типа
                   exit(2).)

              /*VARARGSn*/
                   Подавляет обычно  выполняемую  проверку  на  соот-
                   ветствие количества аргументов для вызова функции,
                   определение которой следует ниже. Проверяются типы
                   данных для первых n аргументов;  если  n  опущено,
                   оно считается равным 0.

              /*ARGSUSED*/
                   Включает опцию -v для следующей функции.

              /*LINTLIBRARY*/
                   В начале файла отключает сообщения о  неиспользуе-
                   мых функциях и аргументах функций  в  этом  файле.
                   Действие эквивалентно использованию опций -v и -x.

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

              Опции -c и -o позволяют для  набора  исходных  C-файлов
              использовать  lint в инкрементальном режиме. Обычно для
              обработки каждого исходного файла пользователь вызывает
              программу lint с опцией -c. Каждый из этих вызовов фор-
              мирует .ln-файл, соответствующий .c-файлу,  и  печатает
              все  сообщения  об  исходном файле. После того, как все
              исходные файлы по  отдельности  обработаны  при  помощи
              lint, lint вызывается еще раз (уже без опции -c) с ука-
              занием  списка всех .ln-файлов и необходимых опций вида
              -l библ. Данный вызов lint печатает  сообщения  о  всех
              межфайловых  несоответствиях. Такая схема удобна в сое-
              динении с использованием make(1); make может  иницииро-
              вать обработку только измененных исходных файлов.

      ФАЙЛЫ
              LLIBDIR               Каталог,  в  котором должны нахо-
                                    диться lint-библиотеки,  укзанные
                                    при  помощи  опции -lбибл. Обычно
                                    это /usr/lib.
              LLIBDIR/lint[12]      Программы для первого  и  второго
                                    проходов lint.
              LLIBDIR/llib-lc.ln    Описания библиотечных C-функций в
                                    двоичном  формате; исходный текст
                                    - в LLIBDIR/llib-lc).
              LLIBDIR/llib-port.ln  Описания мобильных функций в дво-
                                    ичном формате; исходный текст - в
                                    LLIBDIR/llib-port).
              LLIBDIR/llib-lm.ln    Описания математической библиоте-
                                    ки  в  двоичном формате; исходный
                                    текст - в LLIBDIR/llib lm).
              TMPDIR/*lint*         Временные файлы.

              Обычно каталог TMPDIR -  это  /usr/tmp,  однако  данное
              соглашение можно изменить, присвоив переменной  окруже-
              ния   TMPDIR   другое   значение   [см.   tempnam( )  в
              tmpnam(3S)].

      СМ. ТАКЖЕ
              cc(1), cpp(1), make(1).

      СЮРПРИЗЫ
              Функции exit(2), setjmp(3C) и другие, возврата из кото-
              рых не бывает, программой lint не распознаются. Это мо-
              жет вызвать ложную диагностику. В текущей версии  прог-
              раммы lint неработоспособны опции -a, -b, -n.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк