
В PVS-Studio появился режим работы, который поможет максимально рано выявлять ошибки и опечатки. Анализатор запускается сразу после компиляции файлов и если что-то не так, покраснеет от стыда за ваш код. Фича доступна на данный момент только для пользователей Visual Studio 2010.
Я неоднократно писал, чем раньше ошибка будет обнаружена, тем меньше цена её устранения. Впрочем, в этом я не оригинален и про это твердили и продолжают твердить авторы многих книг и статей. Взять хотя бы того же С. Макконнелла. Так что не буду повторяться.
Предыдущие версии анализатора PVS-Studio надо было запускать вручную или интегрировать запуск в ночные сборки. То, что утром можно посмотреть лог и исправить какую-то ошибку — бесспорно замечательно. Но не идеально. Это не мешает в течение дня посадить пару мелких ляпов и потом по 10 минут искать каждый из них. PVS-Studio тут мало поможет. Запускать его только для изменённых файлов — неудобно, а для всего проекта — слишком долго.
К счастью, мы сами программисты и чутки к потребностям наших коллег по клавиатуре. В PVS-Studio 4.30 появился новый режим инкрементального анализа. Проверка теперь практически совмещена с этапом компиляции. Анализатор проверяет те файлы, которые компилируются нажатием любимой всеми нами кнопки F7. Включается этот режим не просто, а очень просто. Достаточно установить галочку напротив пункта «Incremental Analysis After Build» в меню PVS-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) и проектов. Если хочется проверить решение или проект, то, как и прежде, в анализаторе доступны соответствующие команды.
Дополнительные ресурсы:
- Павел Еремеев. Использование анализатора PVS-Studio в процессе инкрементальной сборки в Microsoft Visual Studio 2010. http://www.viva64.com/ru/b/0101/
- MSDN. How to: Modify the Target Framework and Platform Toolset. http://www.viva64.com/go.php?url=689