SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
Изменения в инфраструктуре
инструментов для программистов
Автор: Андрей Карпов

Дата: 26.04.2010


Аннотация
В статье приведены некоторые наблюдения, связанные с изменением в инфраструктуре
инструментов, используемых программистами в повседневной работе. В первую очередь эти
наблюдения связаны с выходом Visual Studio 2010.


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

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


Автоматизированное тестирование
Некоторая функциональность, которая ранее была доступна только при использовании сторонних
утилит, постепенно перемещается в среды разработки. В частности в Visual Studio. Однако эта
функциональность по-прежнему ассоциируется у разработчиков только со сторонними
инструментами. Для примера можно привести систему автоматизированного тестирования
пользовательского интерфейса приложений, появившуюся в Visual Studio 2010 Premium/Ultimate,
которая делает возможным во многих случаях отказаться от таких инструментов как AutomatedQA
TestComplete или Borland SilkTest.

Прошу понять меня правильно. Я вовсе не предлагаю отказываться от имеющейся базы тестов и
срочно начинать переход на систему тестирования, встроенную в Visual Studio 2010. И я вовсе не
агитирую за ее использование. TestComplete - это один из самых мощных коммерческих
продуктов, предназначенных для автоматизации тестирования программного обеспечения.
Однако если вы используете Visual Studio 2010 и принимаете решение о выборе системы
автоматизированного тестирования для нового проекта, то возможно вам не стоит далеко ходить.
Если не требуются особые специфические возможности при тестировании, то вам не придется
покупать и использовать дополнительные системы помимо Visual Studio 2010.

Мы используем систему тестирования пользовательского интерфейса из Visual Studio для
тестирования интерфейса PVS-Studio. Ранее мы были больше сосредоточены на тестировании
внутренних модулей, но с ростом интерфейсной части, встала задача перейти от ее ручного
тестирования к автоматическому. Тем не менее, наши запросы достаточно скромны и мы
довольны, что выбрали тестирование в Visual Studio. На рисунках 1 и 2 приведены некоторые окна
                                                       рисунках
системы тестирования Visual Studio в процессе работы.
Рисунок 1 - Запись действий пользователя в Visual Studio
Рисунок 2 - Дерево элементов управления в Visual Studio

Вывод - выгодно изучить нововведения в уже используемом инструментарии. Если у вас
стандартные запросы по тестированию, то возможно вам хватит функциональности Visual Studio
при разработке новых проектов. Тем самым количество сущностей (инструментов), с которыми вы
имеете дело, не увеличится, а это всегда хорошо.


Редактор кода
Аналогично с тестированием, дело обстоит и с помощником - Visual Assist. Я помню, как хорошо с
ним было во времена Visual Studio 6.0. Но многие говорят о его полезности, просто не зная о
современных возможностях последних Visual Studio или не замечая их. Большинство
возможностей, которые я так ценил в Visual Assist, постепенно реализовались в Visual Studio.
Начиная с Visual Studio 2008, я пришел к выводу, что спокойно могу спокойно обходиться без
Visual Assist и отказался от его использования. С выходом Visual Studio 2010 использование Visual
Assist стало для меня совершенно неактуальным.

Не спорю, в Visual Assist есть функции, которые никогда не будет входить Visual Studio. И уверен,
что для некоторых эти функции важны или просто удобны и полезны. Есть масса людей, для
которых Visual Assist со временем ничуть не теряет важности, а наоборот становится все более
незаменим. Однако, лично я пользовался весьма скромным ассортиментом возможностей и не
испытывал нужды в большем. И эти возможности сейчас удовлетворены средой Visual Studio.
Рассмотрю несколько примеров, вооружившись Visual Studio 2010.

Имеется расцветка синтаксиса. Пусть она не такая разноцветная как в Visual Assist, но вполне
приятная и достаточная для меня. А если учесть подчеркивание синтаксических ошибок, так и
вообще замечательно (смотри рисунок 3).




  Рисунок 3 - Подсветка кода в Visual Studio 2010 и подчеркивание некорректных конструкций

Хорошо работает система подсказок по параметрам функций и подсказки имен по первым
введенным символам имени (смотри рисунки 4 и 5):




               Рисунок 4 - Подсказка по параметрам функции в Visual Studio 2010
Рисунок 5 - Подсказка по именам функций в Visual Studio 2010

Есть возможность, которой мне действительно не хватало без Visual Assist. Это подсказка имен
файлов. В Visual Studio 2010 такая возможность появилась (смотри рисунок 6).
Рисунок 6 - Подсказка по именам подключаемых файлов в Visual Studio 2010

Visual Assist помогал мне разобраться даже в плохо отформатированном коде, когда необходимо
понять, где открывается и закрывается скобка. Visual Studio 2010 предоставляет такую же
функциональность, подсвечивая парные скобки, как показано на рисунке 7.




                   Рисунок 7 - Подсветка парных скобок в Visual Studio 2010
Функциональность редактора кода в Visual Studio 2010 меня полностью удовлетворяет. Возможно,
и вы взглянете на этот редактор Visual Studio как бы вновь.


Статический анализ
Когда разговор заходит о статическом анализе Си++ кода, то часто у программиста возникает
ассоциация: "Это некие инструменты типа lint, имеющие command-line интерфейс и которые уже
неактуальны". Попробуем разобраться, как возникло это мнение. Не буду говорить о компаниях и
зрелых процессах разработки, где статический анализ использовался раньше, используется сейчас
и будет использоваться в будущем. Но большинство используют незрелые процессы. Стесняться
этого не стоит. Это недостаток не программистов, а организаций. Для них статический анализатор
все-таки больше экзотика, чем повседневный инструмент, интегрированный в процесс
разработки.

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

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

Тем не менее, статические анализаторы вовсе не устарели. Они научились обнаруживать многие
типы ошибок связанные с объектно-ориентированным программированием, предупреждать о
некорректном использовании библиотек (например, Qt) и даже выявлять ошибки в параллельных
программах. Следствие - статические анализаторы, как и ранее, позволяют существенно сократить
расходы на этапе тестирования и поддержки. И что приятно, теперь это обычно не отдельные
инструменты, а модули, интегрирующиеся в среду разработки.

Хочется подчеркнуть, что мнение о статических анализаторах как об устаревших command-line
решениях само устарело. Это современные инструменты, прекрасно дополняющее стандартные
возможности компилятора и другие инструменты повышения качества программ.

В качестве примера, вновь возьмем Visual Studio. Начиная с Visual Studio 2005 в состав версии
Team System входит подсистема статического анализа общего назначения Code Analysis. Хотя
система является расширением, она плотно интегрирована в среду и работа с ее
диагностическими сообщениями аналогична работе с сообщениями, выдаваемыми
компилятором (смотри рисунок 8).
Рисунок 8 - Вклада настроек Code Analysis в Visual Studio 2010

Существуют и другие, специализированные статические анализаторы. В качестве примера могу
привести разрабатываемый нами анализато PVS-Studio, который также плотно интегрируется в
                                   анализатор          ,
Visual Studio (смотри рисунок 9) и позволяет выявить многие ошибки в 64
                                                                     64-битных и OpenMP
программах.
Рисунок 9 - Интеграция PVS-Studio в Visual Studio 2010

Современные статические анализаторы это дружественные программы, работу с которыми могут
осуществлять не только профессионалы, но и программисты, только приступившие к работе.
Динамический анализ
Говоря о динамическом анализаторе для поиска ошибок работы с памятью, в первую очередь все
вспоминают об инструменте DevPartner BoundsChecker Suite. Однако хочется уменьшить пыл его
сторонников и тех, кто рекомендует его в форумах. Бесспорно, это был замечательный и
незаменимый инструмент на протяжении долгого времени. К сожалению, в настоящее время
проект не развивается и быстро устаревает. Например, BoundsChecker не поддерживает Win64
приложения. Он способен запускаться в 64-битной среде и проверять 32-битные приложения, но
не умеет работать с 64-битными приложениями. Цитата из буклета: "DevPartner Studio supports 32-
bit application development on 64-bit Windows (WOW 64)".

Отставание такого рода недопустимо для инструментов тестирования. К счастью на смену
BoundsChecker и другим инструментам динамического анализа пришел новый титан, на котором
гораздо разумнее сосредоточить свое внимание. Речь идет об инструменте Intel Parallel Inspector
входящем в состав Intel Parallel Studio.

Intel Parallel Studio интегрируется в Visual Studio (смотри рисунок 10) и добавляет возможность
проверки работы с памятью и потоками. Проверка памяти в Intel Parallel Inspector включает в себя
проверку утечки памяти, обнаружение указателей, ссылающихся на удаленный объект, выявление
работы с неинициализированными переменными. Intel Parallel Inspector позволяет выявить
использование некорректных ссылок на участки памяти, контролирует стек и так далее. Проверки
потоков включают в себя проверки состояний гонки, взаимных блокировок, анализ стека вызовов
с настраиваемой глубиной.
Рисунок 10 - Настройка уровня диагностики в Intel Parallel Inspector

Самое приятное, что можно осуществлять анализ программ как собранных с помощью Intel C++,
так и с помощью Visual C++. Поддерживается анализ Win32 и Win64 приложений. Intel Parallel
Studio стабильно развивается, имеет невысокую цену и его использование можно смело включать
в долговременные планы.


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

Contenu connexe

Tendances

Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...Александр Шамрай
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовSergey Borisov
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android
2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android
2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под AndroidОмские ИТ-субботники
 
Гибкое управление проектами в Visual Studio Team Foundation Server 2012
Гибкое управление проектами в Visual Studio Team Foundation Server 2012Гибкое управление проектами в Visual Studio Team Foundation Server 2012
Гибкое управление проектами в Visual Studio Team Foundation Server 2012Александр Шамрай
 
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва it-people
 
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...Александр Шамрай
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Визулизация ветвления и объединения в Visual Studio Team Foundation Server 2012
Визулизация ветвления и объединения в Visual Studio Team Foundation Server 2012Визулизация ветвления и объединения в Visual Studio Team Foundation Server 2012
Визулизация ветвления и объединения в Visual Studio Team Foundation Server 2012Александр Шамрай
 
Отладка с использованием Intelli Trace в Visual Studio Ultimate 2012
Отладка с использованием Intelli Trace в Visual Studio Ultimate 2012Отладка с использованием Intelli Trace в Visual Studio Ultimate 2012
Отладка с использованием Intelli Trace в Visual Studio Ultimate 2012Александр Шамрай
 
Benefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controllBenefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controllMykyta Hopkalo
 
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»e-Legion
 
Программа для регрессионного тестирования анализаторов PVS-Studio, CppCat
Программа для регрессионного тестирования анализаторов PVS-Studio, CppCatПрограмма для регрессионного тестирования анализаторов PVS-Studio, CppCat
Программа для регрессионного тестирования анализаторов PVS-Studio, CppCatAndrey Karpov
 
Высокоинтерактивные прототипы пользовательского интерфейса - альтернатива Use...
Высокоинтерактивные прототипы пользовательского интерфейса - альтернатива Use...Высокоинтерактивные прототипы пользовательского интерфейса - альтернатива Use...
Высокоинтерактивные прототипы пользовательского интерфейса - альтернатива Use...QA Dnepropetrovsk Community (Ukraine)
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Alexander Babich
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: ТестированиеYandex
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
Appium для народа
Appium для народаAppium для народа
Appium для народаSQALab
 

Tendances (20)

Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
Разработка оптимального ПО - создание раскадровок и сбор отзывов от заинтерес...
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотов
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android
2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android
2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android
 
Гибкое управление проектами в Visual Studio Team Foundation Server 2012
Гибкое управление проектами в Visual Studio Team Foundation Server 2012Гибкое управление проектами в Visual Studio Team Foundation Server 2012
Гибкое управление проектами в Visual Studio Team Foundation Server 2012
 
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Визулизация ветвления и объединения в Visual Studio Team Foundation Server 2012
Визулизация ветвления и объединения в Visual Studio Team Foundation Server 2012Визулизация ветвления и объединения в Visual Studio Team Foundation Server 2012
Визулизация ветвления и объединения в Visual Studio Team Foundation Server 2012
 
Отладка с использованием Intelli Trace в Visual Studio Ultimate 2012
Отладка с использованием Intelli Trace в Visual Studio Ultimate 2012Отладка с использованием Intelli Trace в Visual Studio Ultimate 2012
Отладка с использованием Intelli Trace в Visual Studio Ultimate 2012
 
Benefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controllBenefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controll
 
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
 
Программа для регрессионного тестирования анализаторов PVS-Studio, CppCat
Программа для регрессионного тестирования анализаторов PVS-Studio, CppCatПрограмма для регрессионного тестирования анализаторов PVS-Studio, CppCat
Программа для регрессионного тестирования анализаторов PVS-Studio, CppCat
 
Высокоинтерактивные прототипы пользовательского интерфейса - альтернатива Use...
Высокоинтерактивные прототипы пользовательского интерфейса - альтернатива Use...Высокоинтерактивные прототипы пользовательского интерфейса - альтернатива Use...
Высокоинтерактивные прототипы пользовательского интерфейса - альтернатива Use...
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: Тестирование
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
Java 1 - Java Fund
Java 1 - Java FundJava 1 - Java Fund
Java 1 - Java Fund
 
Azure DevOps Training
Azure DevOps TrainingAzure DevOps Training
Azure DevOps Training
 
Appium для народа
Appium для народаAppium для народа
Appium для народа
 

En vedette

Past simple vs past continous explanation
Past simple vs past continous explanationPast simple vs past continous explanation
Past simple vs past continous explanationmartamadridc
 
Past continous vs past simple
Past continous vs past simplePast continous vs past simple
Past continous vs past simplegeorginasanz
 
Presentación1
Presentación1Presentación1
Presentación1jabp2001
 
Passive voice future tense
Passive voice future tensePassive voice future tense
Passive voice future tenseLizzi Vistin
 
Past simple ppt mercedes
Past simple ppt mercedesPast simple ppt mercedes
Past simple ppt mercedesvazquezcalleja
 
Simple past tense: regular and irregular verbs
Simple past tense: regular and irregular verbsSimple past tense: regular and irregular verbs
Simple past tense: regular and irregular verbsmonica_llovet
 
PAST SIMPLE POWER POINT
PAST SIMPLE POWER POINTPAST SIMPLE POWER POINT
PAST SIMPLE POWER POINTiguerendiain
 
Past simple tense
Past simple tensePast simple tense
Past simple tensemargie66
 
Regular Past Tense For Kids
Regular Past Tense For KidsRegular Past Tense For Kids
Regular Past Tense For KidsLogos Academy
 
The Past Simple ppt
The Past Simple pptThe Past Simple ppt
The Past Simple pptLaura Pérez
 

En vedette (13)

Past simple vs past continous explanation
Past simple vs past continous explanationPast simple vs past continous explanation
Past simple vs past continous explanation
 
Past continous vs past simple
Past continous vs past simplePast continous vs past simple
Past continous vs past simple
 
Grammar expo 3
Grammar expo 3Grammar expo 3
Grammar expo 3
 
Presentación1
Presentación1Presentación1
Presentación1
 
Past simple vs past continuous
Past simple vs past continuousPast simple vs past continuous
Past simple vs past continuous
 
Passive voice future tense
Passive voice future tensePassive voice future tense
Passive voice future tense
 
Past simple ppt mercedes
Past simple ppt mercedesPast simple ppt mercedes
Past simple ppt mercedes
 
Simple past tense: regular and irregular verbs
Simple past tense: regular and irregular verbsSimple past tense: regular and irregular verbs
Simple past tense: regular and irregular verbs
 
PAST SIMPLE POWER POINT
PAST SIMPLE POWER POINTPAST SIMPLE POWER POINT
PAST SIMPLE POWER POINT
 
Past simple tense
Past simple tensePast simple tense
Past simple tense
 
Regular Past Tense For Kids
Regular Past Tense For KidsRegular Past Tense For Kids
Regular Past Tense For Kids
 
The Past Simple ppt
The Past Simple pptThe Past Simple ppt
The Past Simple ppt
 
The Simple Past Tense
The Simple Past TenseThe Simple Past Tense
The Simple Past Tense
 

Similaire à Изменения в инфраструктуре инструментов для программистов

Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...Tatyanazaxarova
 
Проблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийПроблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийTatyanazaxarova
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Tatyanazaxarova
 
UX checklist в тестировании
UX checklist в тестированииUX checklist в тестировании
UX checklist в тестированииVladyslav Miasnikov
 
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияТрудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияTatyanazaxarova
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Andrey Karpov
 
Статический анализатор кода PVS-Studio
Статический анализатор кода PVS-StudioСтатический анализатор кода PVS-Studio
Статический анализатор кода PVS-Studiocppclimber
 
Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
Урок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокУрок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокTatyanazaxarova
 
Azure - Visual Studio Team Services
Azure - Visual Studio Team ServicesAzure - Visual Studio Team Services
Azure - Visual Studio Team ServicesAlexander Babich
 
Установка PC-Lint и его использование в Visual Studio 2005
Установка PC-Lint и его использование в Visual Studio 2005Установка PC-Lint и его использование в Visual Studio 2005
Установка PC-Lint и его использование в Visual Studio 2005Tatyanazaxarova
 
PVS-Studio научился следить за тем, как вы программируете
PVS-Studio научился следить за тем, как вы программируетеPVS-Studio научился следить за тем, как вы программируете
PVS-Studio научился следить за тем, как вы программируетеTatyanazaxarova
 
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...Nikita Filippov
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокTatyanazaxarova
 
UXPeople 2015: Юрий Ветров — Платформенное мышление
UXPeople 2015: Юрий Ветров — Платформенное мышлениеUXPeople 2015: Юрий Ветров — Платформенное мышление
UXPeople 2015: Юрий Ветров — Платформенное мышлениеYury Vetrov
 
First click тестирование. История одного теста.
First click тестирование. История одного теста.First click тестирование. История одного теста.
First click тестирование. История одного теста.Дмитрий Силаев
 
Интерактивные Прототипы или «Игра в Имитацию»
Интерактивные Прототипы  или «Игра в Имитацию»Интерактивные Прототипы  или «Игра в Имитацию»
Интерактивные Прототипы или «Игра в Имитацию»Artem Tolstykh
 
Вебинар Microsoft ALM (11.12.2012)
Вебинар Microsoft ALM (11.12.2012)Вебинар Microsoft ALM (11.12.2012)
Вебинар Microsoft ALM (11.12.2012)Dmitry Melikov
 
Debug with Visual Studio
Debug with Visual StudioDebug with Visual Studio
Debug with Visual StudioIhor Porotikov
 

Similaire à Изменения в инфраструктуре инструментов для программистов (20)

Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
 
Проблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийПроблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложений
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
 
UX checklist в тестировании
UX checklist в тестированииUX checklist в тестировании
UX checklist в тестировании
 
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияТрудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
 
Статический анализатор кода PVS-Studio
Статический анализатор кода PVS-StudioСтатический анализатор кода PVS-Studio
Статический анализатор кода PVS-Studio
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
Урок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокУрок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибок
 
Azure - Visual Studio Team Services
Azure - Visual Studio Team ServicesAzure - Visual Studio Team Services
Azure - Visual Studio Team Services
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Установка PC-Lint и его использование в Visual Studio 2005
Установка PC-Lint и его использование в Visual Studio 2005Установка PC-Lint и его использование в Visual Studio 2005
Установка PC-Lint и его использование в Visual Studio 2005
 
PVS-Studio научился следить за тем, как вы программируете
PVS-Studio научился следить за тем, как вы программируетеPVS-Studio научился следить за тем, как вы программируете
PVS-Studio научился следить за тем, как вы программируете
 
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 
UXPeople 2015: Юрий Ветров — Платформенное мышление
UXPeople 2015: Юрий Ветров — Платформенное мышлениеUXPeople 2015: Юрий Ветров — Платформенное мышление
UXPeople 2015: Юрий Ветров — Платформенное мышление
 
First click тестирование. История одного теста.
First click тестирование. История одного теста.First click тестирование. История одного теста.
First click тестирование. История одного теста.
 
Интерактивные Прототипы или «Игра в Имитацию»
Интерактивные Прототипы  или «Игра в Имитацию»Интерактивные Прототипы  или «Игра в Имитацию»
Интерактивные Прототипы или «Игра в Имитацию»
 
Вебинар Microsoft ALM (11.12.2012)
Вебинар Microsoft ALM (11.12.2012)Вебинар Microsoft ALM (11.12.2012)
Вебинар Microsoft ALM (11.12.2012)
 
Debug with Visual Studio
Debug with Visual StudioDebug with Visual Studio
Debug with Visual Studio
 

Plus de Tatyanazaxarova

Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окружения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
 
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеTatyanazaxarova
 
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияTatyanazaxarova
 
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииTatyanazaxarova
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийTatyanazaxarova
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кодаTatyanazaxarova
 

Plus de Tatyanazaxarova (20)

Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окружения
 
Урок 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. Магические числа
 
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном коде
 
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложения
 
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурации
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
 

Изменения в инфраструктуре инструментов для программистов

  • 1. Изменения в инфраструктуре инструментов для программистов Автор: Андрей Карпов Дата: 26.04.2010 Аннотация В статье приведены некоторые наблюдения, связанные с изменением в инфраструктуре инструментов, используемых программистами в повседневной работе. В первую очередь эти наблюдения связаны с выходом Visual Studio 2010. Введение Набор инструментов, используемых разработчиком, регулярно обновляется. Появляются совершенно новые инструменты, некоторые перестает быть актуальным, какие-то перестают развиваться и вытесняются более совершенными аналогами. За всем этим наблюдать достаточно интересно, и я решил поделиться некоторыми своими последними наблюдениями в этой области. Еще сразу хочу заметить, что мне близка позиция, что чем меньше разнородных инструментов используется, тем лучше. Я заранее готов к критике в минимализме функциональности. Моя позиция спорная, но вполне заслуживает право на существование. Автоматизированное тестирование Некоторая функциональность, которая ранее была доступна только при использовании сторонних утилит, постепенно перемещается в среды разработки. В частности в Visual Studio. Однако эта функциональность по-прежнему ассоциируется у разработчиков только со сторонними инструментами. Для примера можно привести систему автоматизированного тестирования пользовательского интерфейса приложений, появившуюся в Visual Studio 2010 Premium/Ultimate, которая делает возможным во многих случаях отказаться от таких инструментов как AutomatedQA TestComplete или Borland SilkTest. Прошу понять меня правильно. Я вовсе не предлагаю отказываться от имеющейся базы тестов и срочно начинать переход на систему тестирования, встроенную в Visual Studio 2010. И я вовсе не агитирую за ее использование. TestComplete - это один из самых мощных коммерческих продуктов, предназначенных для автоматизации тестирования программного обеспечения. Однако если вы используете Visual Studio 2010 и принимаете решение о выборе системы автоматизированного тестирования для нового проекта, то возможно вам не стоит далеко ходить. Если не требуются особые специфические возможности при тестировании, то вам не придется покупать и использовать дополнительные системы помимо Visual Studio 2010. Мы используем систему тестирования пользовательского интерфейса из Visual Studio для тестирования интерфейса PVS-Studio. Ранее мы были больше сосредоточены на тестировании внутренних модулей, но с ростом интерфейсной части, встала задача перейти от ее ручного тестирования к автоматическому. Тем не менее, наши запросы достаточно скромны и мы
  • 2. довольны, что выбрали тестирование в Visual Studio. На рисунках 1 и 2 приведены некоторые окна рисунках системы тестирования Visual Studio в процессе работы.
  • 3. Рисунок 1 - Запись действий пользователя в Visual Studio
  • 4.
  • 5. Рисунок 2 - Дерево элементов управления в Visual Studio Вывод - выгодно изучить нововведения в уже используемом инструментарии. Если у вас стандартные запросы по тестированию, то возможно вам хватит функциональности Visual Studio при разработке новых проектов. Тем самым количество сущностей (инструментов), с которыми вы имеете дело, не увеличится, а это всегда хорошо. Редактор кода Аналогично с тестированием, дело обстоит и с помощником - Visual Assist. Я помню, как хорошо с ним было во времена Visual Studio 6.0. Но многие говорят о его полезности, просто не зная о современных возможностях последних Visual Studio или не замечая их. Большинство возможностей, которые я так ценил в Visual Assist, постепенно реализовались в Visual Studio. Начиная с Visual Studio 2008, я пришел к выводу, что спокойно могу спокойно обходиться без Visual Assist и отказался от его использования. С выходом Visual Studio 2010 использование Visual Assist стало для меня совершенно неактуальным. Не спорю, в Visual Assist есть функции, которые никогда не будет входить Visual Studio. И уверен, что для некоторых эти функции важны или просто удобны и полезны. Есть масса людей, для
  • 6. которых Visual Assist со временем ничуть не теряет важности, а наоборот становится все более незаменим. Однако, лично я пользовался весьма скромным ассортиментом возможностей и не испытывал нужды в большем. И эти возможности сейчас удовлетворены средой Visual Studio. Рассмотрю несколько примеров, вооружившись Visual Studio 2010. Имеется расцветка синтаксиса. Пусть она не такая разноцветная как в Visual Assist, но вполне приятная и достаточная для меня. А если учесть подчеркивание синтаксических ошибок, так и вообще замечательно (смотри рисунок 3). Рисунок 3 - Подсветка кода в Visual Studio 2010 и подчеркивание некорректных конструкций Хорошо работает система подсказок по параметрам функций и подсказки имен по первым введенным символам имени (смотри рисунки 4 и 5): Рисунок 4 - Подсказка по параметрам функции в Visual Studio 2010
  • 7. Рисунок 5 - Подсказка по именам функций в Visual Studio 2010 Есть возможность, которой мне действительно не хватало без Visual Assist. Это подсказка имен файлов. В Visual Studio 2010 такая возможность появилась (смотри рисунок 6).
  • 8. Рисунок 6 - Подсказка по именам подключаемых файлов в Visual Studio 2010 Visual Assist помогал мне разобраться даже в плохо отформатированном коде, когда необходимо понять, где открывается и закрывается скобка. Visual Studio 2010 предоставляет такую же функциональность, подсвечивая парные скобки, как показано на рисунке 7. Рисунок 7 - Подсветка парных скобок в Visual Studio 2010
  • 9. Функциональность редактора кода в Visual Studio 2010 меня полностью удовлетворяет. Возможно, и вы взглянете на этот редактор Visual Studio как бы вновь. Статический анализ Когда разговор заходит о статическом анализе Си++ кода, то часто у программиста возникает ассоциация: "Это некие инструменты типа lint, имеющие command-line интерфейс и которые уже неактуальны". Попробуем разобраться, как возникло это мнение. Не буду говорить о компаниях и зрелых процессах разработки, где статический анализ использовался раньше, используется сейчас и будет использоваться в будущем. Но большинство используют незрелые процессы. Стесняться этого не стоит. Это недостаток не программистов, а организаций. Для них статический анализатор все-таки больше экзотика, чем повседневный инструмент, интегрированный в процесс разработки. Язык Си является языком, требующим большой аккуратности и внимательности от программиста, так как очень слабо контролирует выполняемые в коде действия. Более опасным языком является, пожалуй, только ассемблер. В связи с этим появились инструменты статического анализа кода, наиболее известным представителем которых является lint. Этот и аналогичные инструменты использовались достаточно широко в силу отсутствия альтернативных способов обнаружить ошибки на этапе кодирования. Они были актуальны для циклов разработки программ любого уровня зрелости. Новый язык Си++, за счет более строго контроля типов и других усовершенствований, стал гораздо более безопасным. Компиляторы для Си и Си++ начали выдавать предупреждения о многих потенциально опасных ситуациях. Фактически они взяли на себя многие функции существовавших статических анализаторов, и использование последних стало менее популярным. В этот момент многие отказались от дополнительного уровня анализа с использованием сторонних инструментов. Тем не менее, статические анализаторы вовсе не устарели. Они научились обнаруживать многие типы ошибок связанные с объектно-ориентированным программированием, предупреждать о некорректном использовании библиотек (например, Qt) и даже выявлять ошибки в параллельных программах. Следствие - статические анализаторы, как и ранее, позволяют существенно сократить расходы на этапе тестирования и поддержки. И что приятно, теперь это обычно не отдельные инструменты, а модули, интегрирующиеся в среду разработки. Хочется подчеркнуть, что мнение о статических анализаторах как об устаревших command-line решениях само устарело. Это современные инструменты, прекрасно дополняющее стандартные возможности компилятора и другие инструменты повышения качества программ. В качестве примера, вновь возьмем Visual Studio. Начиная с Visual Studio 2005 в состав версии Team System входит подсистема статического анализа общего назначения Code Analysis. Хотя система является расширением, она плотно интегрирована в среду и работа с ее диагностическими сообщениями аналогична работе с сообщениями, выдаваемыми компилятором (смотри рисунок 8).
  • 10.
  • 11. Рисунок 8 - Вклада настроек Code Analysis в Visual Studio 2010 Существуют и другие, специализированные статические анализаторы. В качестве примера могу привести разрабатываемый нами анализато PVS-Studio, который также плотно интегрируется в анализатор , Visual Studio (смотри рисунок 9) и позволяет выявить многие ошибки в 64 64-битных и OpenMP программах.
  • 12.
  • 13. Рисунок 9 - Интеграция PVS-Studio в Visual Studio 2010 Современные статические анализаторы это дружественные программы, работу с которыми могут осуществлять не только профессионалы, но и программисты, только приступившие к работе.
  • 14. Динамический анализ Говоря о динамическом анализаторе для поиска ошибок работы с памятью, в первую очередь все вспоминают об инструменте DevPartner BoundsChecker Suite. Однако хочется уменьшить пыл его сторонников и тех, кто рекомендует его в форумах. Бесспорно, это был замечательный и незаменимый инструмент на протяжении долгого времени. К сожалению, в настоящее время проект не развивается и быстро устаревает. Например, BoundsChecker не поддерживает Win64 приложения. Он способен запускаться в 64-битной среде и проверять 32-битные приложения, но не умеет работать с 64-битными приложениями. Цитата из буклета: "DevPartner Studio supports 32- bit application development on 64-bit Windows (WOW 64)". Отставание такого рода недопустимо для инструментов тестирования. К счастью на смену BoundsChecker и другим инструментам динамического анализа пришел новый титан, на котором гораздо разумнее сосредоточить свое внимание. Речь идет об инструменте Intel Parallel Inspector входящем в состав Intel Parallel Studio. Intel Parallel Studio интегрируется в Visual Studio (смотри рисунок 10) и добавляет возможность проверки работы с памятью и потоками. Проверка памяти в Intel Parallel Inspector включает в себя проверку утечки памяти, обнаружение указателей, ссылающихся на удаленный объект, выявление работы с неинициализированными переменными. Intel Parallel Inspector позволяет выявить использование некорректных ссылок на участки памяти, контролирует стек и так далее. Проверки потоков включают в себя проверки состояний гонки, взаимных блокировок, анализ стека вызовов с настраиваемой глубиной.
  • 15. Рисунок 10 - Настройка уровня диагностики в Intel Parallel Inspector Самое приятное, что можно осуществлять анализ программ как собранных с помощью Intel C++, так и с помощью Visual C++. Поддерживается анализ Win32 и Win64 приложений. Intel Parallel Studio стабильно развивается, имеет невысокую цену и его использование можно смело включать в долговременные планы. Заключение Инфраструктура инструментов для программистов постоянно изменяется. Можно найти как новые более удобные решения, так и отказаться от некоторых старых (из-за прекращения их развития). Кстати в крупных компаниях есть специальные сотрудники (и даже отделы), которые занимаются только тем, что следят за развитием используемых в процессе разработки инструментов.