SlideShare a Scribd company logo
1 of 4
Download to read offline
PVS-Studio научился следить за тем,
    Studio                ь
как вы программируете
Автор: Андрей Карпов

Дата: 24.06.2011

В PVS-Studio появился режим работы, который поможет максимально рано выявлять ошибки и
       Studio
опечатки. Анализатор запускается сразу после компиляции файлов и если что-то не так,
покраснеет от стыда за ваш код. Фича доступна на данный момент только для пользователей
Visual Studio 2010.




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

Предыдущие версии анализатора PVS Studio надо было запускать вручную или интег
                                  PVS-Studio                                 интегрировать
запуск в ночные сборки. То, что утром можно посмотреть лог и исправить какую ошибку -
                                                                       какую-то
бесспорно замечательно. Но не идеально. Это не мешает в течени дня посадить пару мелких
                                                         течение
ляпов и потом по 10 минут искать каждый из них. PVS
                                                PVS-Studio тут мало поможет. Запускать его
                                                                     оможет.
только для изменённых файлов - неудобно, а для всего проекта - слишком долго.
                  нных

К счастью, мы сами программисты и чутки к потребностям наших коллег по клавиатуре В PVS-
                                                                           клавиатуре.
Studio 4.30 появился новый режим инкрементального анализа. Проверка теперь практически
совмещена с этапом компиляции. Анализатор проверяет те файлы, которые компилиру
                                                                           компилируются
нажатием любимой всеми нами кнопк F7. Включается этот режим не просто, а очень просто.
                               кнопки
Достаточно установить галочку напротив пункта "
                                              "Incremental Analysis After Build в меню PVS-
                                                        al                Build"
Studio:
Рассмотрим теперь на примере, как это работает. Предположим, что я очень радовался процессу
программирования, спешил и допустил ошибку в индексе массива:




Результат такого выражения всегда 'false'. Но я не замечаю. Я пишу код дальше и радуюсь жизни.
Потом я с удовлетворением от проделанной работы нажимаю F7, и модифицированный файл
успешно компилируется. Причём VS2010 не выдает никаких предупреждений. Я спокойно иду
править следующий участок кода.

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

Однако, ошибка есть. И через некоторое время анализатор просигнализирует о наличии
подозрительного кода! Он покраснеет, и рука программиста сама потянется к нужной вкладке,
чтобы узнать подробности:




И действительно, в сообщении можно прочитать, что условие всегда ложно:
Как результат, ошибка будет исправлена практически сразу после написания.

Приглашаю попробовать новый режим PVS-Studio. Скачать пробную версию, как обычно можно
здесь. Если после установки VS2010 начнет подтормаживать, то уменьшите аппетиты PVS-Studio.
По умолчанию при проверке анализатор использует все доступные процессорные ядра.
Соответственно, в настройках можно указать сколько ядер можно использовать.



Предвижу сразу несколько вопросов. Поэтому заранее подготовил в конце маленький FAQ.



1) А почему новый режим поддерживается только в VS2010?

Только в Visual Studio 2010 появился API, который позволяет узнать, какие файлы были изменены,
и какие от них зависят. Другими словами появился механизм, позволяющий выбрать файлы для
проверки. Чуть подробнее про это здесь [1].

Если новый режим работы очень понравится, то мы подумаем, как реализовать его и для
пользователей Visual Studio 2005/2008. Впрочем, хочу заметить, что перейти на Visual Studio 2010
гораздо проще, чем может показаться. Можно выбрать старый компилятор, но использовать
возможности новой среды. Это делается с помощью Platform Toolset [2].



2) Почему не сделать проверку вообще на лету и подчеркивать ошибки сразу, как, например, это
делает IntelliSense?

Во-первых, нам недоступна такая плотная интеграция с Visual Studio. Чтобы её получить нужно
быть более дружным с Microsoft.

Во-вторых, всё равно ничего не получится. Статический анализ достаточно сложен и, чтобы
выявить некоторые ошибки, необходимо собрать информацию по довольно большому фрагменту
кода. Поскольку код будет редактироваться, то практически всегда его будет невозможно
распарсить. Я думаю, каждый программист видел, как Си/Си++ компилятор сходит с ума из-за
случайно лишней скобки или некорректного шаблона. Си/Си++ - это не тот язык, который можно
анализировать совсем уж на лету.



3) А что делать, если я зеленый и красный цвет не различаю?

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



4) Почему вот здесь и вот так не работает?

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



5) Если я делаю Rebuild, то анализатор затем проверит весь проект?

Нет. Это не имеет смысла и слишком долго. Анализатор игнорирует команды пересборки
решений (solution) и проектов. Если хочется проверить решение или проект, то, как и прежде, в
анализаторе доступны соответствующие команды.



Дополнительные ресурсы

   1. Павел Еремеев. Использование анализатора PVS-Studio в процессе инкрементальной
      сборки в Microsoft Visual Studio 2010. http://www.viva64.com/ru/b/0101/

   2. MSDN. How to: Modify the Target Framework and Platform Toolset.
      http://www.viva64.com/go.php?url=689

More Related Content

What's hot

Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovRuby Meditation
 
Урок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокУрок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокTatyanazaxarova
 
Linux ubuntu sovet
Linux ubuntu sovetLinux ubuntu sovet
Linux ubuntu sovetthrash87
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всемSQALab
 
69
6969
69JIuc
 
Php unit тесты с codeception
Php unit тесты с codeceptionPhp unit тесты с codeception
Php unit тесты с codeceptionVladislav Alexeyev
 
68
6868
68JIuc
 
живу в Google Chrome #1
живу в Google Chrome #1живу в Google Chrome #1
живу в Google Chrome #1vdas us
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Sigma Software
 
Разбор некоторых технических моментов нового .NET
Разбор некоторых технических моментов нового .NETРазбор некоторых технических моментов нового .NET
Разбор некоторых технических моментов нового .NETCUSTIS
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментовVitalii Morvaniuk
 
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...FrontTalks Conference
 

What's hot (15)

Joker2014
Joker2014Joker2014
Joker2014
 
Это сложно
Это сложноЭто сложно
Это сложно
 
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
 
Урок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибокУрок 8. Статический анализ для выявления 64-битных ошибок
Урок 8. Статический анализ для выявления 64-битных ошибок
 
Linux ubuntu sovet
Linux ubuntu sovetLinux ubuntu sovet
Linux ubuntu sovet
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всем
 
69
6969
69
 
Php unit тесты с codeception
Php unit тесты с codeceptionPhp unit тесты с codeception
Php unit тесты с codeception
 
68
6868
68
 
живу в Google Chrome #1
живу в Google Chrome #1живу в Google Chrome #1
живу в Google Chrome #1
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
 
Разбор некоторых технических моментов нового .NET
Разбор некоторых технических моментов нового .NETРазбор некоторых технических моментов нового .NET
Разбор некоторых технических моментов нового .NET
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
 

Viewers also liked

LAC02: Complex Powers!
LAC02: Complex Powers!LAC02: Complex Powers!
LAC02: Complex Powers!A Jorge Garcia
 
SERVICIOS
SERVICIOSSERVICIOS
SERVICIOSyesica
 
Nikki Heath and Sally Westrope - Partnership Working: What's Worked for Us
Nikki Heath and Sally Westrope - Partnership Working: What's Worked for UsNikki Heath and Sally Westrope - Partnership Working: What's Worked for Us
Nikki Heath and Sally Westrope - Partnership Working: What's Worked for UsSLA
 
Spazio Residencial Chl E Mail
Spazio Residencial   Chl E MailSpazio Residencial   Chl E Mail
Spazio Residencial Chl E Mailimoveisdorio
 
Examen Final2
Examen Final2Examen Final2
Examen Final2osper2000
 
Munich #tc talks
Munich #tc talksMunich #tc talks
Munich #tc talksGood Rebels
 
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICOProcedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICOeixcinc
 
SPS Cincinnati slidedeck (pdf)
SPS Cincinnati slidedeck (pdf)SPS Cincinnati slidedeck (pdf)
SPS Cincinnati slidedeck (pdf)Ryan Dennis
 
Voorkom wanbetalers
Voorkom wanbetalersVoorkom wanbetalers
Voorkom wanbetalersVeneficus
 
Na 範例
Na 範例Na 範例
Na 範例5045033
 
Monthly financialsummary
Monthly financialsummaryMonthly financialsummary
Monthly financialsummaryAlex Palermo
 
Idc Insights Overview Oct 2011
Idc Insights Overview Oct 2011Idc Insights Overview Oct 2011
Idc Insights Overview Oct 2011jwwainwright
 
Experimentalstudy measurement of sonic speed of drilling muds under shear stress
Experimentalstudy measurement of sonic speed of drilling muds under shear stressExperimentalstudy measurement of sonic speed of drilling muds under shear stress
Experimentalstudy measurement of sonic speed of drilling muds under shear stressFrank-Michael Jäger
 
Koka Sexton InStat Graphic
Koka Sexton InStat GraphicKoka Sexton InStat Graphic
Koka Sexton InStat GraphicKoka Sexton 💼
 
Presentation EPMI Web 2.0 David Boisseleau
Presentation EPMI Web 2.0 David BoisseleauPresentation EPMI Web 2.0 David Boisseleau
Presentation EPMI Web 2.0 David Boisseleaudboisseleau
 

Viewers also liked (20)

LAC02: Complex Powers!
LAC02: Complex Powers!LAC02: Complex Powers!
LAC02: Complex Powers!
 
Womenyoga
WomenyogaWomenyoga
Womenyoga
 
SERVICIOS
SERVICIOSSERVICIOS
SERVICIOS
 
Nikki Heath and Sally Westrope - Partnership Working: What's Worked for Us
Nikki Heath and Sally Westrope - Partnership Working: What's Worked for UsNikki Heath and Sally Westrope - Partnership Working: What's Worked for Us
Nikki Heath and Sally Westrope - Partnership Working: What's Worked for Us
 
Spazio Residencial Chl E Mail
Spazio Residencial   Chl E MailSpazio Residencial   Chl E Mail
Spazio Residencial Chl E Mail
 
Examen Final2
Examen Final2Examen Final2
Examen Final2
 
Uii tema7-equipo cam-sgepci
Uii tema7-equipo cam-sgepciUii tema7-equipo cam-sgepci
Uii tema7-equipo cam-sgepci
 
sf_kensyu_20090109_2
sf_kensyu_20090109_2sf_kensyu_20090109_2
sf_kensyu_20090109_2
 
Munich #tc talks
Munich #tc talksMunich #tc talks
Munich #tc talks
 
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICOProcedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
 
SPS Cincinnati slidedeck (pdf)
SPS Cincinnati slidedeck (pdf)SPS Cincinnati slidedeck (pdf)
SPS Cincinnati slidedeck (pdf)
 
Voorkom wanbetalers
Voorkom wanbetalersVoorkom wanbetalers
Voorkom wanbetalers
 
Na 範例
Na 範例Na 範例
Na 範例
 
Monthly financialsummary
Monthly financialsummaryMonthly financialsummary
Monthly financialsummary
 
solution provider package
solution provider packagesolution provider package
solution provider package
 
Idc Insights Overview Oct 2011
Idc Insights Overview Oct 2011Idc Insights Overview Oct 2011
Idc Insights Overview Oct 2011
 
Experimentalstudy measurement of sonic speed of drilling muds under shear stress
Experimentalstudy measurement of sonic speed of drilling muds under shear stressExperimentalstudy measurement of sonic speed of drilling muds under shear stress
Experimentalstudy measurement of sonic speed of drilling muds under shear stress
 
Link Power Technologies
Link  Power TechnologiesLink  Power Technologies
Link Power Technologies
 
Koka Sexton InStat Graphic
Koka Sexton InStat GraphicKoka Sexton InStat Graphic
Koka Sexton InStat Graphic
 
Presentation EPMI Web 2.0 David Boisseleau
Presentation EPMI Web 2.0 David BoisseleauPresentation EPMI Web 2.0 David Boisseleau
Presentation EPMI Web 2.0 David Boisseleau
 

Similar to PVS-Studio научился следить за тем, как вы программируете

Изменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистовИзменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистовTatyanazaxarova
 
60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программистаAndrey Karpov
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кодаTatyanazaxarova
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Andrey Karpov
 
Mortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersMortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersÞorgeir Ingvarsson
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокTatyanazaxarova
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Анти шаблоны непрерывной интеграции
Анти шаблоны непрерывной интеграцииАнти шаблоны непрерывной интеграции
Анти шаблоны непрерывной интеграцииSQALab
 
Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеTatyanazaxarova
 
Константин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороныКонстантин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороныTatyanazaxarova
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыryba4
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for DummiesCOTOHA
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java DeveloperOlexandra Dmytrenko
 
А так ли нужен DevOps инженер в проекте?
А так ли нужен DevOps инженер в проекте?А так ли нужен DevOps инженер в проекте?
А так ли нужен DevOps инженер в проекте?Mad Devs
 
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочинеAlexei Lupan
 
Многопроцессорным компьютерам - параллельные программы!
Многопроцессорным компьютерам -  параллельные программы!Многопроцессорным компьютерам -  параллельные программы!
Многопроцессорным компьютерам - параллельные программы!Tatyanazaxarova
 

Similar to PVS-Studio научился следить за тем, как вы программируете (20)

Изменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистовИзменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистов
 
60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
 
TAP
TAPTAP
TAP
 
Mortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersMortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation Engineers
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 
Windows3.1
Windows3.1Windows3.1
Windows3.1
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Анти шаблоны непрерывной интеграции
Анти шаблоны непрерывной интеграцииАнти шаблоны непрерывной интеграции
Анти шаблоны непрерывной интеграции
 
Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработке
 
Monotouch
MonotouchMonotouch
Monotouch
 
openSUSE Build Server от Б до Ю
openSUSE Build Server от Б до ЮopenSUSE Build Server от Б до Ю
openSUSE Build Server от Б до Ю
 
Константин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороныКонстантин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороны
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работы
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for Dummies
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java Developer
 
А так ли нужен DevOps инженер в проекте?
А так ли нужен DevOps инженер в проекте?А так ли нужен DevOps инженер в проекте?
А так ли нужен DevOps инженер в проекте?
 
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
 
Многопроцессорным компьютерам - параллельные программы!
Многопроцессорным компьютерам -  параллельные программы!Многопроцессорным компьютерам -  параллельные программы!
Многопроцессорным компьютерам - параллельные программы!
 

More from Tatyanazaxarova

Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияTatyanazaxarova
 
Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 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
 

More from Tatyanazaxarova (20)

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

PVS-Studio научился следить за тем, как вы программируете

  • 1. PVS-Studio научился следить за тем, Studio ь как вы программируете Автор: Андрей Карпов Дата: 24.06.2011 В PVS-Studio появился режим работы, который поможет максимально рано выявлять ошибки и Studio опечатки. Анализатор запускается сразу после компиляции файлов и если что-то не так, покраснеет от стыда за ваш код. Фича доступна на данный момент только для пользователей Visual Studio 2010. Я неоднократно писал, чем раньше ошибка будет обнаружена, тем меньше цена её устранения. Впрочем, в этом я не оригинален и про это твердили и продолжают твердить авторы многих книг и статей. Взять хотя бы того же С. Макконнелла. Так что не буду повторяться. . Предыдущие версии анализатора PVS Studio надо было запускать вручную или интег PVS-Studio интегрировать запуск в ночные сборки. То, что утром можно посмотреть лог и исправить какую ошибку - какую-то бесспорно замечательно. Но не идеально. Это не мешает в течени дня посадить пару мелких течение ляпов и потом по 10 минут искать каждый из них. PVS PVS-Studio тут мало поможет. Запускать его оможет. только для изменённых файлов - неудобно, а для всего проекта - слишком долго. нных К счастью, мы сами программисты и чутки к потребностям наших коллег по клавиатуре В PVS- клавиатуре. Studio 4.30 появился новый режим инкрементального анализа. Проверка теперь практически совмещена с этапом компиляции. Анализатор проверяет те файлы, которые компилиру компилируются нажатием любимой всеми нами кнопк F7. Включается этот режим не просто, а очень просто. кнопки Достаточно установить галочку напротив пункта " "Incremental Analysis After Build в меню PVS- al Build" Studio:
  • 2. Рассмотрим теперь на примере, как это работает. Предположим, что я очень радовался процессу программирования, спешил и допустил ошибку в индексе массива: Результат такого выражения всегда 'false'. Но я не замечаю. Я пишу код дальше и радуюсь жизни. Потом я с удовлетворением от проделанной работы нажимаю F7, и модифицированный файл успешно компилируется. Причём VS2010 не выдает никаких предупреждений. Я спокойно иду править следующий участок кода. Но когда компиляция закончена, тихо, в фоновом режиме, запускается анализатор PVS-Studio и проверяет модифицированные файлы. В фоновом режиме он запускается специально, чтобы не мешать программисту. Статический анализ выполняется дольше компиляции, и нет смысла заставлять программиста тяжело вздыхать, разглядывая диалог прогресса. Если всё написано корректно (и у вас, и у нас ;-) ), то программист вообще не заметит присутствия и работы PVS- Studio. Однако, ошибка есть. И через некоторое время анализатор просигнализирует о наличии подозрительного кода! Он покраснеет, и рука программиста сама потянется к нужной вкладке, чтобы узнать подробности: И действительно, в сообщении можно прочитать, что условие всегда ложно:
  • 3. Как результат, ошибка будет исправлена практически сразу после написания. Приглашаю попробовать новый режим PVS-Studio. Скачать пробную версию, как обычно можно здесь. Если после установки VS2010 начнет подтормаживать, то уменьшите аппетиты PVS-Studio. По умолчанию при проверке анализатор использует все доступные процессорные ядра. Соответственно, в настройках можно указать сколько ядер можно использовать. Предвижу сразу несколько вопросов. Поэтому заранее подготовил в конце маленький FAQ. 1) А почему новый режим поддерживается только в VS2010? Только в Visual Studio 2010 появился API, который позволяет узнать, какие файлы были изменены, и какие от них зависят. Другими словами появился механизм, позволяющий выбрать файлы для проверки. Чуть подробнее про это здесь [1]. Если новый режим работы очень понравится, то мы подумаем, как реализовать его и для пользователей Visual Studio 2005/2008. Впрочем, хочу заметить, что перейти на Visual Studio 2010 гораздо проще, чем может показаться. Можно выбрать старый компилятор, но использовать возможности новой среды. Это делается с помощью Platform Toolset [2]. 2) Почему не сделать проверку вообще на лету и подчеркивать ошибки сразу, как, например, это делает IntelliSense? Во-первых, нам недоступна такая плотная интеграция с Visual Studio. Чтобы её получить нужно быть более дружным с Microsoft. Во-вторых, всё равно ничего не получится. Статический анализ достаточно сложен и, чтобы выявить некоторые ошибки, необходимо собрать информацию по довольно большому фрагменту
  • 4. кода. Поскольку код будет редактироваться, то практически всегда его будет невозможно распарсить. Я думаю, каждый программист видел, как Си/Си++ компилятор сходит с ума из-за случайно лишней скобки или некорректного шаблона. Си/Си++ - это не тот язык, который можно анализировать совсем уж на лету. 3) А что делать, если я зеленый и красный цвет не различаю? С замечанием согласен. Пожалуй, в следующей версии будем не только менять цвет, но и писать текст на вкладке. 4) Почему вот здесь и вот так не работает? Это новая возможность и высока вероятность наличия каких-то ошибок. Мы будем благодарны, если вы сообщите нам о замеченных недостатках и пожеланиях. Страница обратной связи. 5) Если я делаю Rebuild, то анализатор затем проверит весь проект? Нет. Это не имеет смысла и слишком долго. Анализатор игнорирует команды пересборки решений (solution) и проектов. Если хочется проверить решение или проект, то, как и прежде, в анализаторе доступны соответствующие команды. Дополнительные ресурсы 1. Павел Еремеев. Использование анализатора PVS-Studio в процессе инкрементальной сборки в Microsoft Visual Studio 2010. http://www.viva64.com/ru/b/0101/ 2. MSDN. How to: Modify the Target Framework and Platform Toolset. http://www.viva64.com/go.php?url=689