SlideShare a Scribd company logo
1 of 42
Download to read offline
Установка PC-Lint и его использование
в Visual Studio 2005
Автор: Андрей Карпов

Дата: 05.12.2006


Аннотация
Статья посвящена первому знакомству со статическим анализатором Си++-кода PC-Lint версии 8.0.
Описан процесс установки инструмента и его первоначальной настройки.


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

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

К первому классу можно отнести системы, автоматизирующие юнит-тестирование. В качестве
примера можно привести такие известные программные продукты, как AutomatedQA
TestComplete (http://www.automatedqa.com) или Parasoft Jtest (http://www.parasoft.com). Данная
методология тестирования с большим успехом применяется во многих компаниях и незаменима в
случае работы над динамично развивающимся программным продуктом.

Другое направление - сокращение издержек на этапе тестирования ПО, за счёт выявления
областей ПО затронутых изменениями. Это позволяет значительно сократить объёмы ручного
тестирования и выделить модифицированные участки для более тщательной проверки. Такой
подход поддерживает высокое качество тестирования при меньших временных затратах.
Представителем такого класса инструментов является Testing Relief (http://www.testingrelief.net).

При отладке больших приложений хорошо зарекомендовали себя динамические анализаторы. К
ним можно отнести Valgrind (http://valgrind.org), Compuware BoundsChecker
(http://www.compuware.com).

Широкий спектр задач по повышению качества программного кода решают статические
анализаторы, как общего назначения, так и специализированного. К первым можно отнести,
например, продукцию компании Coverity Incorporated (http://www.coverity.com) или Gimpel
Software PC-Lint (http://www.gimpel.com), который мы рассмотрим подробнее. К
специализированным статическим анализаторам можно отнести инструмент Viva64
(http://www.viva64.com), предназначенный для диагностики ошибок в 64-битном коде.
В этой статье рассмотрены первые шаги по осваиванию статического анализатора Gimpel Software
PC-Lint версии 8.0. Это связано с его популярностью и заинтересованностью разработчиков
программного обеспечения в использовании подобных статических анализаторов. Использование
статических анализаторов кода давно стало культурой в крупных компаниях и интерес к
подобным инструментам непрерывно растет.


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

Данная статья по установке и настройки PC-lint будет представлять собой наглядное руководство,
состоящее из рисунков, демонстрирующих последовательные шаги и пояснительного текста к
ним.
Рисунок 1. Запускаем инсталлятор.
Рисунок 2. Листаем первые страницы мастера установки.
Рисунок 3. Соглашаемся с лицензионным соглашением.
Рисунок 4. Вводим свое имя и название организации.
Рисунок 5. Выбираем папку для установки. Поскольку вам придется часто работать с папкой, где
установлен PC-lint, чтобы поправить конфигурационный файл или почитать документацию, не
рекомендуем устанавливать его в папку с большим уровнем вложенности. С другой стороны,
после установки Вы можете настроить ссылки на интересующие вас файлы, и тогда место
установки не имеет значение. Мы соглашаемся на установку в корневой каталог диска C.
Рисунок 6. Продолжаем процесс установки.
Рисунок 7. Когда установка будет завершена, соглашаемся на запуск конфигурационной
программы.
Рисунок 8. Теперь время заварить кофе и приготовиться к настройкам вашего нового
инструментария.
Рисунок 9. PC-lint допускает автономное использование в пакетном режиме. Но, на наш взгляд,
более удобным представляется его интерактивное использования из среды Visual Studio.
Описание процесса интеграции PC-lint в среду можно почерпнуть из файла env-vc7.lnt. Этот файл
содержит информацию об интеграции в Visual Studio 2003, но разница по сравнению с
интеграцией в Visual Studio 2005 совсем незначительна. Вы можете не обращаться к этому файлу,
а воспользоваться для настройки нашим документом, в который уже внесены необходимые
поправки касательно Visual Studio 2005.
2. Первоначальная настройка
Рисунок 10. Выбираем расположение конфигурационного файла, который сейчас создаст мастер
настройки. Мы рекомендуем расположить его там же, где установлен PC-lint, чтобы все файлы,
которые относятся к этой утилите, находились в одном месте. В противном случае Вам придется
чуть больше повозиться с настройкой путей к разным файлам. Вы также можете использовать уже
существующий файл конфигурации. Выберем создание нового файла конфигурации.
Рисунок 11. Выбираем наиболее подходящий конфигурационный файл для нашего компилятора.
К сожалению, мы не найдем в списке Visual C++ 2005, поэтому остановим свой выбор на Visual C++
2003. В дальнейшем мы вручную скорректируем сгенерированный мастером настроек
конфигурационный файл "STD.LNT".
Рисунок 12. Выбираем интересующую нас модель данных.
Рисунок 13. Скорее всего, Вам понадобится поддержка библиотек MFC, STL и Win32API, так что
подключаем соответствующие конфигурационные файлы. Эта настройка выполняет очень важное
действие: копирует необходимые для работы LNT файлы из каталога "C:Lintlnt" в каталог
"C:Lint". Иначе Вам будет необходимо выполнить это копирование вручную. В каталоге
"C:Lintlnt" эти файлы не обнаруживаются, даже если путь к ним прописать в переменной
окружения PATH.
Рисунок 14. Что выбрать из списка различных наборов правил по проверке кода, решать Вам.
Можете пока ничего не выбирать, а потом вручную (или этим же мастером настроек) добавлять
или убирать различные наборы, анализируя затем результат проверки на ваших программах.
Рисунок 15. Если вы используете в своей программе не только стандартные заголовочные файлы,
но и сторонние библиотеки (например, Mesa), то вам понадобится прописать соответствующие
пути.
Рисунок 16. Прописываем пути к необходимым заголовочным файлам. Настойчиво рекомендуется
это сделать, в противном случае PC-lint будет просто останавливаться на строках #include
"unknown.h".




Рисунок 17. Все, создание заготовки конфигурационного файла завершено!




Рисунок 18. Теперь мы можем, используя его как образец, сделать нужные нам
конфигурационные файлы. Других конфигураций создавать не будем, поэтому выберем "No".
Рисунок 19. Мы можем также провести некоторые дополнительные настройки по поведению PC   PC-
lint. Сейчас мы пройдем этот этап, чтобы в дальнейшем продемонстрировать связь этих настроек с
содержимым конфигурационного файла "options.lnt".




Рисунок 20. Не будем подробно останавливаться на следующих настройках. Вам самим придется
выбрать, что считать подозрительным кодом, а что нет. Но отметим, что мы выбрали не считать
подозрительной следующую конструкцию:
  дозрительной

if ( (a = b) ) {

    ...

}
Рисунок 21. Выбираем наиболее подходящие настройки для нашей среды. Выбор "env-vc7.lnt"
никак не отражается на генерируемых конфигурационных файлах. Смысл этой настройки
непонятен. Возможно, существует ошибка в мастере конфигурации. Позже мы добавим "env-
vc7.lnt" в конфигурацию самостоятельно.
Рисунок 22. Поскольку мы не собираемся использовать PC-lint в пакетном режиме, мы можем
пропустить данный шаг конфигурирования.
Рисунок 23. Установка утилиты завершена полностью! Теперь можно приступить к окончательной
настройке и интеграции в Visual Studio 2005.

В начале, нам надо отправиться на сайт http://www.gimpel.com и скачать новые обновления для
PC-lint и новые конфигурационные файлы. Так как мы используем версию 8.00, то скачиваем для
нее обновления со страницы http://www.viva64.com/go.php?url=501.

Если у вас отсутствует файл "co-msc80.lnt", то скачайте его. Он представляет собой
конфигурационный файл для работы в Visual Studio 2005. В любом случае он должен находиться в
папке "C:Lint" (см. также рисунок 10).

Также посмотрите другие обновления и действуйте по своему усмотрению.

Теперь мы готовы приступить к доработке конфигурационных файлов. Вначале посмотрим на те
файлы, что были сгенерированы при установке утилиты PC-lint. Это файлы "options.lnt" и "std.lnt".
Начнем с файла "options.lnt". У нас он выглядит следующим образом:

// Please note -- this is a representative set of error suppression

// options. Please adjust to suit your own policies

// See manual (chapter LIVING WITH LINT)

// for further details.

-e820 // allow test of parenthesized assignment

В этом файле мастер настройки сохранил ваши пожелания по анализу некоторых конструкций (см.
рисунок 15). Помните, мы решили считать конструкцию вида:

if ( (a = b) ) {

     ...

}

верной? Результат этого решения отразился в файле "options.lnt", как строчка

-e820 // allow test of parenthesized assignment

которая указывает считать указанные конструкции безопасными.

Файл "options.lnt" включается в "std.lnt". Идеология включения одного конфигурационного файла
PC-lint в другой, такая же, как и идеология использования директивы "#include" в языках С/С++.

Теперь посмотрим на файл "std.lnt":

// Microsoft Visual C++ .NET 2003,

// -si4 -sl4 -sp8, lib-mfc.lnt lib-stl.lnt lib-w32.lnt

// Standard lint options

co-msc71.lnt
lib-mfc.lnt lib-stl.lnt lib-w32.lnt

options.lnt -si4 -sl4 -sp8

-iD:ASRCfox-libfox-1.4.4include

-iD:ASRCLibrariesmesainclude

Строчка "co-msc71.lnt" включает (аналогия #include в С/С++) в наш основной конфигурационный
файл настройки для компилятора Visual C++ 2003. Сразу измените эту строчку на "co-msc80.lnt".

Строку "lib-mfc.lnt lib-stl.lnt lib-w32.lnt" можно оставить без изменений.

Добавляем "env-vc7.lnt". У нас нет файла "env-vc8.lnt", но и с "env-vc7.lnt" все будет замечательно
работать. В документации к PC-Lint предлагается не включать "env-vc7.lnt" в ваши файлы
конфигурации, а использовать это как один из параметров при вызове из среды MSVC. Но на наш
взгляд проще, чтобы все настройки находились в одном месте. Все равно "std.lnt" уже заточен на
работу со средой Visual Studio. И когда, например, появится "env-vc8.lnt", проще поправить в
одном месте (в "std.lnt"), чем править несколько команд в среде Visual Studio, вызывающих PC-lint.

Строчка "options.lnt -si4 -sl4 -sp8" кажется сложной, но на самом деле в ней находятся четыре
простых и независимых ключа настройки. Первый включает в "std.lnt" файл "options.lnt". А
остальные служат для задания размерности типов. За подробностями следует обратиться к
документации, входящей в комплект PC-lint.

Идея использования включаемых файлов очень удобна. Так можно собрать отдельно настройки
путей к заголовочным файлам или включение/выключение ряда предупреждений. А потом
собирать конечные конфигурационные файлы из них, как из кирпичиков. Мы думаем, вы легко с
этим разберетесь, а пока, для простоты, избавимся от файла "options.lnt", перенеся его
содержимое в "std.lnt".

Добавим в конфигурации еще и уровень предупреждений, задающийся ключиком -w##.

После внесенных исправлений файл "std.lnt" выглядит следующим образом:

-iD:ASRCfox-libfox-1.4.4include

-iD:ASRCLibrariesmesainclude

co-msc80.lnt

env-vc7.lnt

lib-mfc.lnt

lib-stl.lnt

lib-w32.lnt

-si4 -sl4 -sp8

-w3

-e820
Это вполне рабочий вариант конфигурации, и пришло время интегрировать PC
                           конфигурации,                              PC-lint в среду MSVC.


3. Интеграция в Visual Studio 2005
Рисунок 24. Запустим Visual Studio 2005. И приступим к интеграции PC-lint. Мы создадим три новых
пункта в меню Tools:

Project Creation - создание проекта PC-lint для проверки всех фалов в проекте MSVC.

Project Check - проверка по ранее созданному проекту (проверка всех файлов);

Unit Check - проверка текущего файла.

В документации к PC-lint также описано использование операции под названием "Simple Check"
для проверки отдельной единицы компиляции. Но на практике очень редко можно встретить
независимые модули.




Рисунок 25. Выберите пункт "External Tools ..." в меню Tools.
Рисунок 26. Нажмите кнопку "Add".
Рисунок 27. Заполним соответствующие поля, как показано на рисунке.
Рисунок 28. Нажмем кнопку OK. И теперь мы сможем увидеть пункт "PC-lint (Project Creation)" в
меню "Tools".
Рисунок 29. Теперь по аналогии с созданием пункта "Project Creation" мы создадим "Project
Check". Для этого повторим все предыдущие шаги, но заполним поля по-другому (обратите
внимание на галочки).
Рисунок 30. Последней командой является "Unit Check". Для ее создания выполняются все те же
шаги.
Рисунок 31. Если Вы все сделали правильно, то во вкладке меню "Tools" Вы можете наблюдать три
новых пункта. На этом интеграция PC-lint в Visual Studio закончена.

Если Вы хотите проверить весь ваш проект, следует вначале воспользоваться пунктом PC-lint
(Project Creation), а затем PC-lint (Project Check).

Вновь использовать PC-lint (Project Creation) Вы должны, когда добавляете или удаляете файлы из
проекта или модифицируете настройки проекта.

PC-lint (Unit Check) служит для проверки кода в текущем активном окне. Это удобно при
написании нового кода. Учтите, чтобы воспользоваться PC-lint (Unit Check) вы также вначале
должны выполнить PC-lint (Project Creation).
Рисунок 32. Теперь наградите себя за проделанную работу еще одной чашечкой кофе, и мы
попробуем с вами эту новую утилиту.
Рисунок 33. Создадим простое Win32 консольное приложение.
Рисунок 34. Нам нужно самое простое приложение, поэтому нажимаем кнопку "Finish".

Напишем следующую программу. Убедимся, что программа компилируется, и компилятор не
выдает предупреждений даже на четвертом уровне (/W4).

#include "stdafx.h"

TCHAR FooTxt[] = _T("foo");

bool Foo(int argc, _TCHAR* argv[])

{

    for (int i = 0; i != argc; ++i) {

        if (_tcscmp(argv[i], FooTxt) == 0)

        {

            return true;

        }

    }

    return false;

}

int _tmain(int argc, _TCHAR* argv[])

{

    if (Foo(argc, argv))
        Foo(argc,
return 1;

    return 0;

}

Теперь пришло время воспользоваться PC-lint. Выполняем вначле "PC-lint (Project Creation)", а
затем "PC-lint (Project Check)". Если все верно настроено, то Вы должны получить приблизительно
следующий вывод:

PC-lint for C/C++ (NT) Vers. 8.00u, Copyright Gimpel Software 1985-2006

--- Module: .SimpleProjectForPClint.cpp (C++)

}

.SimpleProjectForPClint.cpp(14): error 818: (Info -- Pointer parameter 'argv' (line 5) could be declared
as pointing to const)

.SimpleProjectForPClint.cpp(5): error 830: (Info -- Location cited in prior message)

--- Module: .stdafx.cpp (C++)

--- Wrap-up for Module: .stdafx.cpp

.stdafx.cpp(9): error 766: (Info -- Header file
'D:WORK3SimpleProjectForPClintSimpleProjectForPClintstdafx.h' not used in module '.stdafx.cpp')

--- Global Wrap-up

.SimpleProjectForPClint.cpp(5): error 765: (Info -- external 'Foo(int, unsigned short **)' (line 5, file
.SimpleProjectForPClint.cpp) could be made static)

.SimpleProjectForPClint.cpp(3): error 765: (Info -- external 'FooTxt' (line 3, file
.SimpleProjectForPClint.cpp) could be made static)

 D:WORK3SimpleProjectForPClintSimpleProjectForPClintstdafx.h(9): error 755: (Info -- global macro
'WIN32_LEAN_AND_MEAN' (line 9, file
D:WORK3SimpleProjectForPClintSimpleProjectForPClintstdafx.h) not referenced)

error 900: (Note -- Successful completion, 6 messages produced)

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

Но если Вы получили сообщение:

PC-lint for C/C++ (NT) Vers. 8.00u, Copyright Gimpel Software 1985-2006

--- Module: .pclint.cpp (C++)

_

#include <stdio.h>
D:Sourcespclintstdafx.h(10) : Error 322: Unable to open include fi
                  stdafx.h(10)                                     file

'stdio.h'

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

echo %INCLUDE%

В результате Вы должны увидеть:

C:Program FilesMicrosoft Visual Studio 8VCATLMFCINCLUDE;C:Program Files
                  Microsoft                                         Program FilesMicrosoft Visual
Studio 8VCINCLUDE;C:Program Files
                          Program FilesMicrosoft Visual Studio 8VCPlatformSDK
                                                                     PlatformSDKinclude;C:Program
FilesMicrosoft Visual Studio 8
      Microsoft               8SDKv2.0include;7

Если пути к заголовочным файлам Visual Studio отсутствуют, то необходимо либо поправить
                                              отсутствуют,
переменные окружения, либо прописать пути к файлам в конфигурационных файлах PC  PC-lint.
Рисунок 35. Нажимая кнопку F4 в окне Output, Вы можете легко осуществлять навигацию по
предупреждениям PC-lint.

На этом установку PC-lint 8.00 и интеграцию ее в Visual Studio 2005 можно считать завершенной.
                     lint
Следующим Вашим шагом должно стать ознакомление с документацией и настройка
конфигурационных файлов под Ваши специфические потребности. Удачной работы!


Библиографический список
   1.   Wikipedia, "Unit testing", http://www.viva64.com/go.php?url=44
   2.   Wikipedia, "Dynamic testing", http://www.viva64.com/go.php?url=45
   3.   Wikipedia, "Static testing" http://www.viva64.com/go.php?url=46
                           testing",
   4.   Wikipedia, "Static code analysis", http://www.viva64.com/go.php?url=31
   5.   Wikipedia, "White box testing", http://www.viva64.com/go.php?url=47
   6.   Wikipedia, "Black box testing", http://www.viva64.com/go.php?url=48

More Related Content

Viewers also liked

Dn11 u3 a31_acdo
Dn11 u3 a31_acdoDn11 u3 a31_acdo
Dn11 u3 a31_acdoditzaowile
 
Gloriosisimo general
Gloriosisimo generalGloriosisimo general
Gloriosisimo generalAndres Luck
 
Отношение украинцев к проекту «Первый в Украине детский эко-реабилитационный...
Отношение украинцев к проекту «Первый в  Украине детский эко-реабилитационный...Отношение украинцев к проекту «Первый в  Украине детский эко-реабилитационный...
Отношение украинцев к проекту «Первый в Украине детский эко-реабилитационный...IFAK Institut (Ukrainian office)
 
Yo Fo To Marketing plan
Yo Fo To Marketing planYo Fo To Marketing plan
Yo Fo To Marketing planYofotorus
 
Resumen 1 como hacer una buena presentacion oral
Resumen 1 como hacer una buena presentacion oralResumen 1 como hacer una buena presentacion oral
Resumen 1 como hacer una buena presentacion oralALexia Diaz
 

Viewers also liked (8)

Boletines postpago junio 2011
Boletines postpago junio 2011Boletines postpago junio 2011
Boletines postpago junio 2011
 
Dn11 u3 a31_acdo
Dn11 u3 a31_acdoDn11 u3 a31_acdo
Dn11 u3 a31_acdo
 
valoracion RN
valoracion RNvaloracion RN
valoracion RN
 
BlogCamp CEE 2008 - B2Blogger
BlogCamp CEE 2008 - B2BloggerBlogCamp CEE 2008 - B2Blogger
BlogCamp CEE 2008 - B2Blogger
 
Gloriosisimo general
Gloriosisimo generalGloriosisimo general
Gloriosisimo general
 
Отношение украинцев к проекту «Первый в Украине детский эко-реабилитационный...
Отношение украинцев к проекту «Первый в  Украине детский эко-реабилитационный...Отношение украинцев к проекту «Первый в  Украине детский эко-реабилитационный...
Отношение украинцев к проекту «Первый в Украине детский эко-реабилитационный...
 
Yo Fo To Marketing plan
Yo Fo To Marketing planYo Fo To Marketing plan
Yo Fo To Marketing plan
 
Resumen 1 como hacer una buena presentacion oral
Resumen 1 como hacer una buena presentacion oralResumen 1 como hacer una buena presentacion oral
Resumen 1 como hacer una buena presentacion oral
 

Similar to Установка PC-Lint и его использование в Visual Studio 2005

Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
линукс
линукслинукс
линуксlekiya
 
Изменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистовИзменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистовTatyanazaxarova
 
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...Александр Шамрай
 
Разработка ресурсоемких приложений в среде Visual C++
Разработка ресурсоемких приложений в среде Visual C++Разработка ресурсоемких приложений в среде Visual C++
Разработка ресурсоемких приложений в среде Visual C++Tatyanazaxarova
 
Разница в подходах анализа кода компилятором и выделенным инструментом
Разница в подходах анализа кода компилятором и выделенным инструментомРазница в подходах анализа кода компилятором и выделенным инструментом
Разница в подходах анализа кода компилятором и выделенным инструментомTatyanazaxarova
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Tatyanazaxarova
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoftKewpaN
 
Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияTatyanazaxarova
 
инструментарий
инструментарийинструментарий
инструментарийigdweb
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кодаTatyanazaxarova
 
Cравнение средств разработки RIA приложений используя Flash платформу
Cравнение средств разработки RIA приложений используя Flash платформуCравнение средств разработки RIA приложений используя Flash платформу
Cравнение средств разработки RIA приложений используя Flash платформуilja.panin
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Vladimir Bakhov
 
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииTatyanazaxarova
 
Open office manual
Open office manualOpen office manual
Open office manualDim Kin
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийSergii Shmarkatiuk
 
Проблемы в системе журналирования событий безопасности ОС Windows
Проблемы в системе журналирования событий безопасности ОС WindowsПроблемы в системе журналирования событий безопасности ОС Windows
Проблемы в системе журналирования событий безопасности ОС Windowsimbasoft ru
 
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияТрудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияTatyanazaxarova
 

Similar to Установка PC-Lint и его использование в Visual Studio 2005 (20)

Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
линукс
линукслинукс
линукс
 
Изменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистовИзменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистов
 
Начало работы с Git (версия 2016)
Начало работы с Git (версия 2016)Начало работы с Git (версия 2016)
Начало работы с Git (версия 2016)
 
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
 
Разработка ресурсоемких приложений в среде Visual C++
Разработка ресурсоемких приложений в среде Visual C++Разработка ресурсоемких приложений в среде Visual C++
Разработка ресурсоемких приложений в среде Visual C++
 
Разница в подходах анализа кода компилятором и выделенным инструментом
Разница в подходах анализа кода компилятором и выделенным инструментомРазница в подходах анализа кода компилятором и выделенным инструментом
Разница в подходах анализа кода компилятором и выделенным инструментом
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
 
Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окружения
 
Windows3.1
Windows3.1Windows3.1
Windows3.1
 
инструментарий
инструментарийинструментарий
инструментарий
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
 
Cравнение средств разработки RIA приложений используя Flash платформу
Cравнение средств разработки RIA приложений используя Flash платформуCравнение средств разработки RIA приложений используя Flash платформу
Cравнение средств разработки RIA приложений используя Flash платформу
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурации
 
Open office manual
Open office manualOpen office manual
Open office manual
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Проблемы в системе журналирования событий безопасности ОС Windows
Проблемы в системе журналирования событий безопасности ОС WindowsПроблемы в системе журналирования событий безопасности ОС Windows
Проблемы в системе журналирования событий безопасности ОС Windows
 
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияТрудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
 

More from Tatyanazaxarova

Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программTatyanazaxarova
 
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокУрок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокTatyanazaxarova
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиTatyanazaxarova
 
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурУрок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурTatyanazaxarova
 
Урок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхУрок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхTatyanazaxarova
 
Урок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияУрок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияTatyanazaxarova
 
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиУрок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиTatyanazaxarova
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаTatyanazaxarova
 
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхУрок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхTatyanazaxarova
 
Урок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейУрок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейTatyanazaxarova
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаTatyanazaxarova
 
Урок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаУрок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаTatyanazaxarova
 
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовУрок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовTatyanazaxarova
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаTatyanazaxarova
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокTatyanazaxarova
 
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеTatyanazaxarova
 
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияTatyanazaxarova
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийTatyanazaxarova
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кодаTatyanazaxarova
 

More from Tatyanazaxarova (20)

Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программ
 
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокУрок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
 
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурУрок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структур
 
Урок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхУрок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данных
 
Урок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияУрок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. Исключения
 
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиУрок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен данными
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
 
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхУрок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединениях
 
Урок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейУрок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателей
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметика
 
Урок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаУрок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвига
 
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовУрок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном коде
 
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложения
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
 
PVS-Studio
PVS-Studio PVS-Studio
PVS-Studio
 

Установка PC-Lint и его использование в Visual Studio 2005

  • 1. Установка PC-Lint и его использование в Visual Studio 2005 Автор: Андрей Карпов Дата: 05.12.2006 Аннотация Статья посвящена первому знакомству со статическим анализатором Си++-кода PC-Lint версии 8.0. Описан процесс установки инструмента и его первоначальной настройки. Введение Язык Си++ является одним из самых мощных, но, в то же время, и одним из самых сложных языков программирования. Написано бесчисленное количество литературы по созданию качественного кода, использованию различных методологий разработки и тестирования. Однако проблема повышения качества создаваемого кода до сих пор остается актуальной и не до конца проработанной областью. Среди инструментов, помогающих в тестировании и улучшении программного кода, можно выделить несколько классов. К первому классу можно отнести системы, автоматизирующие юнит-тестирование. В качестве примера можно привести такие известные программные продукты, как AutomatedQA TestComplete (http://www.automatedqa.com) или Parasoft Jtest (http://www.parasoft.com). Данная методология тестирования с большим успехом применяется во многих компаниях и незаменима в случае работы над динамично развивающимся программным продуктом. Другое направление - сокращение издержек на этапе тестирования ПО, за счёт выявления областей ПО затронутых изменениями. Это позволяет значительно сократить объёмы ручного тестирования и выделить модифицированные участки для более тщательной проверки. Такой подход поддерживает высокое качество тестирования при меньших временных затратах. Представителем такого класса инструментов является Testing Relief (http://www.testingrelief.net). При отладке больших приложений хорошо зарекомендовали себя динамические анализаторы. К ним можно отнести Valgrind (http://valgrind.org), Compuware BoundsChecker (http://www.compuware.com). Широкий спектр задач по повышению качества программного кода решают статические анализаторы, как общего назначения, так и специализированного. К первым можно отнести, например, продукцию компании Coverity Incorporated (http://www.coverity.com) или Gimpel Software PC-Lint (http://www.gimpel.com), который мы рассмотрим подробнее. К специализированным статическим анализаторам можно отнести инструмент Viva64 (http://www.viva64.com), предназначенный для диагностики ошибок в 64-битном коде.
  • 2. В этой статье рассмотрены первые шаги по осваиванию статического анализатора Gimpel Software PC-Lint версии 8.0. Это связано с его популярностью и заинтересованностью разработчиков программного обеспечения в использовании подобных статических анализаторов. Использование статических анализаторов кода давно стало культурой в крупных компаниях и интерес к подобным инструментам непрерывно растет. 1. Установка PC-Lint При первом знакомстве с PC-lint у начинающего пользователя могут возникнуть трудности с пониманием принципов работы и настройки этой программы. Выполнив предлагаемые в данной статье рекомендации, Вы быстрее сможете приступить к непосредственно анализу кода и не тратить время на изучение нюансов настройки на первых этапах работы. Данная статья по установке и настройки PC-lint будет представлять собой наглядное руководство, состоящее из рисунков, демонстрирующих последовательные шаги и пояснительного текста к ним.
  • 3. Рисунок 1. Запускаем инсталлятор.
  • 4. Рисунок 2. Листаем первые страницы мастера установки.
  • 5. Рисунок 3. Соглашаемся с лицензионным соглашением.
  • 6. Рисунок 4. Вводим свое имя и название организации.
  • 7. Рисунок 5. Выбираем папку для установки. Поскольку вам придется часто работать с папкой, где установлен PC-lint, чтобы поправить конфигурационный файл или почитать документацию, не рекомендуем устанавливать его в папку с большим уровнем вложенности. С другой стороны, после установки Вы можете настроить ссылки на интересующие вас файлы, и тогда место установки не имеет значение. Мы соглашаемся на установку в корневой каталог диска C.
  • 8. Рисунок 6. Продолжаем процесс установки.
  • 9. Рисунок 7. Когда установка будет завершена, соглашаемся на запуск конфигурационной программы.
  • 10. Рисунок 8. Теперь время заварить кофе и приготовиться к настройкам вашего нового инструментария.
  • 11. Рисунок 9. PC-lint допускает автономное использование в пакетном режиме. Но, на наш взгляд, более удобным представляется его интерактивное использования из среды Visual Studio. Описание процесса интеграции PC-lint в среду можно почерпнуть из файла env-vc7.lnt. Этот файл содержит информацию об интеграции в Visual Studio 2003, но разница по сравнению с интеграцией в Visual Studio 2005 совсем незначительна. Вы можете не обращаться к этому файлу, а воспользоваться для настройки нашим документом, в который уже внесены необходимые поправки касательно Visual Studio 2005.
  • 13. Рисунок 10. Выбираем расположение конфигурационного файла, который сейчас создаст мастер настройки. Мы рекомендуем расположить его там же, где установлен PC-lint, чтобы все файлы, которые относятся к этой утилите, находились в одном месте. В противном случае Вам придется чуть больше повозиться с настройкой путей к разным файлам. Вы также можете использовать уже существующий файл конфигурации. Выберем создание нового файла конфигурации.
  • 14. Рисунок 11. Выбираем наиболее подходящий конфигурационный файл для нашего компилятора. К сожалению, мы не найдем в списке Visual C++ 2005, поэтому остановим свой выбор на Visual C++ 2003. В дальнейшем мы вручную скорректируем сгенерированный мастером настроек конфигурационный файл "STD.LNT".
  • 15. Рисунок 12. Выбираем интересующую нас модель данных.
  • 16. Рисунок 13. Скорее всего, Вам понадобится поддержка библиотек MFC, STL и Win32API, так что подключаем соответствующие конфигурационные файлы. Эта настройка выполняет очень важное
  • 17. действие: копирует необходимые для работы LNT файлы из каталога "C:Lintlnt" в каталог "C:Lint". Иначе Вам будет необходимо выполнить это копирование вручную. В каталоге "C:Lintlnt" эти файлы не обнаруживаются, даже если путь к ним прописать в переменной окружения PATH.
  • 18. Рисунок 14. Что выбрать из списка различных наборов правил по проверке кода, решать Вам. Можете пока ничего не выбирать, а потом вручную (или этим же мастером настроек) добавлять или убирать различные наборы, анализируя затем результат проверки на ваших программах.
  • 19.
  • 20. Рисунок 15. Если вы используете в своей программе не только стандартные заголовочные файлы, но и сторонние библиотеки (например, Mesa), то вам понадобится прописать соответствующие пути.
  • 21. Рисунок 16. Прописываем пути к необходимым заголовочным файлам. Настойчиво рекомендуется это сделать, в противном случае PC-lint будет просто останавливаться на строках #include "unknown.h". Рисунок 17. Все, создание заготовки конфигурационного файла завершено! Рисунок 18. Теперь мы можем, используя его как образец, сделать нужные нам конфигурационные файлы. Других конфигураций создавать не будем, поэтому выберем "No".
  • 22.
  • 23. Рисунок 19. Мы можем также провести некоторые дополнительные настройки по поведению PC PC- lint. Сейчас мы пройдем этот этап, чтобы в дальнейшем продемонстрировать связь этих настроек с содержимым конфигурационного файла "options.lnt". Рисунок 20. Не будем подробно останавливаться на следующих настройках. Вам самим придется выбрать, что считать подозрительным кодом, а что нет. Но отметим, что мы выбрали не считать подозрительной следующую конструкцию: дозрительной if ( (a = b) ) { ... }
  • 24. Рисунок 21. Выбираем наиболее подходящие настройки для нашей среды. Выбор "env-vc7.lnt" никак не отражается на генерируемых конфигурационных файлах. Смысл этой настройки
  • 25. непонятен. Возможно, существует ошибка в мастере конфигурации. Позже мы добавим "env- vc7.lnt" в конфигурацию самостоятельно.
  • 26. Рисунок 22. Поскольку мы не собираемся использовать PC-lint в пакетном режиме, мы можем пропустить данный шаг конфигурирования.
  • 27. Рисунок 23. Установка утилиты завершена полностью! Теперь можно приступить к окончательной настройке и интеграции в Visual Studio 2005. В начале, нам надо отправиться на сайт http://www.gimpel.com и скачать новые обновления для PC-lint и новые конфигурационные файлы. Так как мы используем версию 8.00, то скачиваем для нее обновления со страницы http://www.viva64.com/go.php?url=501. Если у вас отсутствует файл "co-msc80.lnt", то скачайте его. Он представляет собой конфигурационный файл для работы в Visual Studio 2005. В любом случае он должен находиться в папке "C:Lint" (см. также рисунок 10). Также посмотрите другие обновления и действуйте по своему усмотрению. Теперь мы готовы приступить к доработке конфигурационных файлов. Вначале посмотрим на те файлы, что были сгенерированы при установке утилиты PC-lint. Это файлы "options.lnt" и "std.lnt". Начнем с файла "options.lnt". У нас он выглядит следующим образом: // Please note -- this is a representative set of error suppression // options. Please adjust to suit your own policies // See manual (chapter LIVING WITH LINT) // for further details. -e820 // allow test of parenthesized assignment В этом файле мастер настройки сохранил ваши пожелания по анализу некоторых конструкций (см. рисунок 15). Помните, мы решили считать конструкцию вида: if ( (a = b) ) { ... } верной? Результат этого решения отразился в файле "options.lnt", как строчка -e820 // allow test of parenthesized assignment которая указывает считать указанные конструкции безопасными. Файл "options.lnt" включается в "std.lnt". Идеология включения одного конфигурационного файла PC-lint в другой, такая же, как и идеология использования директивы "#include" в языках С/С++. Теперь посмотрим на файл "std.lnt": // Microsoft Visual C++ .NET 2003, // -si4 -sl4 -sp8, lib-mfc.lnt lib-stl.lnt lib-w32.lnt // Standard lint options co-msc71.lnt
  • 28. lib-mfc.lnt lib-stl.lnt lib-w32.lnt options.lnt -si4 -sl4 -sp8 -iD:ASRCfox-libfox-1.4.4include -iD:ASRCLibrariesmesainclude Строчка "co-msc71.lnt" включает (аналогия #include в С/С++) в наш основной конфигурационный файл настройки для компилятора Visual C++ 2003. Сразу измените эту строчку на "co-msc80.lnt". Строку "lib-mfc.lnt lib-stl.lnt lib-w32.lnt" можно оставить без изменений. Добавляем "env-vc7.lnt". У нас нет файла "env-vc8.lnt", но и с "env-vc7.lnt" все будет замечательно работать. В документации к PC-Lint предлагается не включать "env-vc7.lnt" в ваши файлы конфигурации, а использовать это как один из параметров при вызове из среды MSVC. Но на наш взгляд проще, чтобы все настройки находились в одном месте. Все равно "std.lnt" уже заточен на работу со средой Visual Studio. И когда, например, появится "env-vc8.lnt", проще поправить в одном месте (в "std.lnt"), чем править несколько команд в среде Visual Studio, вызывающих PC-lint. Строчка "options.lnt -si4 -sl4 -sp8" кажется сложной, но на самом деле в ней находятся четыре простых и независимых ключа настройки. Первый включает в "std.lnt" файл "options.lnt". А остальные служат для задания размерности типов. За подробностями следует обратиться к документации, входящей в комплект PC-lint. Идея использования включаемых файлов очень удобна. Так можно собрать отдельно настройки путей к заголовочным файлам или включение/выключение ряда предупреждений. А потом собирать конечные конфигурационные файлы из них, как из кирпичиков. Мы думаем, вы легко с этим разберетесь, а пока, для простоты, избавимся от файла "options.lnt", перенеся его содержимое в "std.lnt". Добавим в конфигурации еще и уровень предупреждений, задающийся ключиком -w##. После внесенных исправлений файл "std.lnt" выглядит следующим образом: -iD:ASRCfox-libfox-1.4.4include -iD:ASRCLibrariesmesainclude co-msc80.lnt env-vc7.lnt lib-mfc.lnt lib-stl.lnt lib-w32.lnt -si4 -sl4 -sp8 -w3 -e820
  • 29. Это вполне рабочий вариант конфигурации, и пришло время интегрировать PC конфигурации, PC-lint в среду MSVC. 3. Интеграция в Visual Studio 2005
  • 30. Рисунок 24. Запустим Visual Studio 2005. И приступим к интеграции PC-lint. Мы создадим три новых пункта в меню Tools: Project Creation - создание проекта PC-lint для проверки всех фалов в проекте MSVC. Project Check - проверка по ранее созданному проекту (проверка всех файлов); Unit Check - проверка текущего файла. В документации к PC-lint также описано использование операции под названием "Simple Check" для проверки отдельной единицы компиляции. Но на практике очень редко можно встретить независимые модули. Рисунок 25. Выберите пункт "External Tools ..." в меню Tools.
  • 31. Рисунок 26. Нажмите кнопку "Add".
  • 32. Рисунок 27. Заполним соответствующие поля, как показано на рисунке.
  • 33. Рисунок 28. Нажмем кнопку OK. И теперь мы сможем увидеть пункт "PC-lint (Project Creation)" в меню "Tools".
  • 34. Рисунок 29. Теперь по аналогии с созданием пункта "Project Creation" мы создадим "Project Check". Для этого повторим все предыдущие шаги, но заполним поля по-другому (обратите внимание на галочки).
  • 35. Рисунок 30. Последней командой является "Unit Check". Для ее создания выполняются все те же шаги.
  • 36. Рисунок 31. Если Вы все сделали правильно, то во вкладке меню "Tools" Вы можете наблюдать три новых пункта. На этом интеграция PC-lint в Visual Studio закончена. Если Вы хотите проверить весь ваш проект, следует вначале воспользоваться пунктом PC-lint (Project Creation), а затем PC-lint (Project Check). Вновь использовать PC-lint (Project Creation) Вы должны, когда добавляете или удаляете файлы из проекта или модифицируете настройки проекта. PC-lint (Unit Check) служит для проверки кода в текущем активном окне. Это удобно при написании нового кода. Учтите, чтобы воспользоваться PC-lint (Unit Check) вы также вначале должны выполнить PC-lint (Project Creation).
  • 37. Рисунок 32. Теперь наградите себя за проделанную работу еще одной чашечкой кофе, и мы попробуем с вами эту новую утилиту.
  • 38. Рисунок 33. Создадим простое Win32 консольное приложение.
  • 39. Рисунок 34. Нам нужно самое простое приложение, поэтому нажимаем кнопку "Finish". Напишем следующую программу. Убедимся, что программа компилируется, и компилятор не выдает предупреждений даже на четвертом уровне (/W4). #include "stdafx.h" TCHAR FooTxt[] = _T("foo"); bool Foo(int argc, _TCHAR* argv[]) { for (int i = 0; i != argc; ++i) { if (_tcscmp(argv[i], FooTxt) == 0) { return true; } } return false; } int _tmain(int argc, _TCHAR* argv[]) { if (Foo(argc, argv)) Foo(argc,
  • 40. return 1; return 0; } Теперь пришло время воспользоваться PC-lint. Выполняем вначле "PC-lint (Project Creation)", а затем "PC-lint (Project Check)". Если все верно настроено, то Вы должны получить приблизительно следующий вывод: PC-lint for C/C++ (NT) Vers. 8.00u, Copyright Gimpel Software 1985-2006 --- Module: .SimpleProjectForPClint.cpp (C++) } .SimpleProjectForPClint.cpp(14): error 818: (Info -- Pointer parameter 'argv' (line 5) could be declared as pointing to const) .SimpleProjectForPClint.cpp(5): error 830: (Info -- Location cited in prior message) --- Module: .stdafx.cpp (C++) --- Wrap-up for Module: .stdafx.cpp .stdafx.cpp(9): error 766: (Info -- Header file 'D:WORK3SimpleProjectForPClintSimpleProjectForPClintstdafx.h' not used in module '.stdafx.cpp') --- Global Wrap-up .SimpleProjectForPClint.cpp(5): error 765: (Info -- external 'Foo(int, unsigned short **)' (line 5, file .SimpleProjectForPClint.cpp) could be made static) .SimpleProjectForPClint.cpp(3): error 765: (Info -- external 'FooTxt' (line 3, file .SimpleProjectForPClint.cpp) could be made static) D:WORK3SimpleProjectForPClintSimpleProjectForPClintstdafx.h(9): error 755: (Info -- global macro 'WIN32_LEAN_AND_MEAN' (line 9, file D:WORK3SimpleProjectForPClintSimpleProjectForPClintstdafx.h) not referenced) error 900: (Note -- Successful completion, 6 messages produced) Сложно с этим не согласиться. Теперь в Ваших руках замечательный инструмент, который позволит улучшить Ваш код и найти как потенциальные, так и настоящие ошибки. Но если Вы получили сообщение: PC-lint for C/C++ (NT) Vers. 8.00u, Copyright Gimpel Software 1985-2006 --- Module: .pclint.cpp (C++) _ #include <stdio.h>
  • 41. D:Sourcespclintstdafx.h(10) : Error 322: Unable to open include fi stdafx.h(10) file 'stdio.h' то это означает, что у Вас не настроены переменные окружения, и Вам необходимо проверить переменную окружения INCLUDE, для чего в командной строке напишем echo %INCLUDE% В результате Вы должны увидеть: C:Program FilesMicrosoft Visual Studio 8VCATLMFCINCLUDE;C:Program Files Microsoft Program FilesMicrosoft Visual Studio 8VCINCLUDE;C:Program Files Program FilesMicrosoft Visual Studio 8VCPlatformSDK PlatformSDKinclude;C:Program FilesMicrosoft Visual Studio 8 Microsoft 8SDKv2.0include;7 Если пути к заголовочным файлам Visual Studio отсутствуют, то необходимо либо поправить отсутствуют, переменные окружения, либо прописать пути к файлам в конфигурационных файлах PC PC-lint.
  • 42. Рисунок 35. Нажимая кнопку F4 в окне Output, Вы можете легко осуществлять навигацию по предупреждениям PC-lint. На этом установку PC-lint 8.00 и интеграцию ее в Visual Studio 2005 можно считать завершенной. lint Следующим Вашим шагом должно стать ознакомление с документацией и настройка конфигурационных файлов под Ваши специфические потребности. Удачной работы! Библиографический список 1. Wikipedia, "Unit testing", http://www.viva64.com/go.php?url=44 2. Wikipedia, "Dynamic testing", http://www.viva64.com/go.php?url=45 3. Wikipedia, "Static testing" http://www.viva64.com/go.php?url=46 testing", 4. Wikipedia, "Static code analysis", http://www.viva64.com/go.php?url=31 5. Wikipedia, "White box testing", http://www.viva64.com/go.php?url=47 6. Wikipedia, "Black box testing", http://www.viva64.com/go.php?url=48