Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Интересно, а в какой среде работают раз…

Интересно, а в какой среде работают разработчики Microsoft? Linux?

27 Ноя 2012

Насчет Linux я конечно шучу. Тем не менее, меня интересует этот вопрос. Я понимаю, что системы, над которыми работают в Microsoft, большие и сложные. Я отлично представляю, как баг может быть обнаружен только через некоторое время пользователями. Но мне не понятно, как можно не замечать явных ляпов в инструментах, которыми сами разработчики должны пользоваться регулярно.

В начале, немного о классических ошибках. С ними всё понятно. Их легко не заметить разработчикам, так как они не являются конечными пользователями. Хорошим примером является ошибка в одной из версий Microsoft Visio. Кажется, это была версия 2010 года. Если вы начинали вводить текст в блок из Basic Flowchart на русском языке, то он вводился задом наперед. Это я понимаю. Кто-то напутал и решил, что в русском языке пишут справа налево. Русский и арабский – это одно и тоже, или очень похоже. Среди тестеров русских людей не нашлось, и ошибка ушла в release версию. Вот эту ситуацию я понимаю.

А вот то, что происходит в среде Visual Studio, не поддаётся логическому объяснению. Они совсем не пользуются этой средой? Я подозреваю, что для сборки они используют сложные билд-системы. Но неужели никто во всем Microsoft не использует саму Visual Studio для работы? Если использует, то мне не понятно, как можно не замечать явных промашек.

Притчей во языцех, является функция поиска в среде Visual Studio 2010 [1, 2, 3, ...]. Кто использовал Visual Studio 2010, тот думаю, сразу поймёт о чём я. Неужели никто из разработчиков Visual Studio сам не нажимал Ctrl-F в этой среде?

С выходом Windows 8 разработчикам подкинули очередной глюкодром. На каких программах он будет проявляться, я не знаю. Я могу рассказать, как это сказывается на PVS-Studio. У нас он проявляется на связке Windows Defender и компилятора Visual C++. Мой коллега написал техническую заметку про это. Однако я перескажу её суть более просто и эмоционально.

Итак, жила была в Windows система Windows Defender. В Windows 8 эта система стала представлять собой своего рода бесплатный антивирус. Всё замечательно. Однако теперь PVS-Studio стал работать в несколько раз медленнее.

Какая связь? Связь тонкая и неочевидная. Анализатор PVS-Studio запускает для препроцессирования компилятор Visual C++ (cl.exe). Так вот, теперь препроцессирование выполняется только на одном ядре, если включен Windows Defender. Чудеса и магия.

Читатель наверняка скажет: "Вы наверное процессы неправильно создаёте. Проверьте Affinity Mask.". Нет, с эти всё в порядке. Проблема в связке Windows Defender с Visual C++.

При этом где-то внутри Windows Defender есть механизм из пластилина и бумаги. Он помогает Visual Studio работать на первый взгляд правильно. При параллельной компиляции используются все ядра процессора. Однако стоит в настройках прописать ключики /P и /c, как всё ломается. Нажимаем F7 в Visual Studio и все процессы CL.EXE начинают запускаться на одном ядре. Забавно наблюдать, как на 8-ядерном процессоре все процессы ютятся на одном ядре, отъедая скромные 12%. Остальные 7 ядер в это время пьют чай.

Стоит отключить Windows Defender и всё начинает работаться нормально. Уверен, что от Windows Defender скоро пострадают и другие программы.

Вернемся к PVS-Studio. Ему необходимо запускать CL.EXE как раз для препроцессирования файлов. В результате всё это делается на одном ядре. Прискорбная ситуация. Причем явное задание Affinity Mask ничем не помогает. Windows Defender крепко держит систему в своих руках.

И вот тут у меня вновь возникает вопрос! А что, в Microsoft программисты работают с отключенным Windows Defender? Неужели никто нигде ни разу не заметил странностей? Или никто не использует Visual Studio?

С одной стороны всё это кажется мелочами и обыкновенными суровыми буднями программистов. Мы много чего уже повидали странного в сложных системах. Но всё равно ситуация меня расстраивает. Как устранить замедление, не отключая Windows Defender не понятно. Интернет пока молчит.

Первопричина всего это в том, что при разработке используется не та среда, которая предлагается пользователям. И ещё вопрос. Если, например, внутри Microsoft действительно отключают Windows Defender, то нужна ли такая полезная система нам?

Обращение к разработчикам. Не только Microsoft, а вообще всем. Используйте приложения, которые вы разрабатываете. Иначе сразу чувствуется, что вы не доверяете своей собственной системе. Это вылезает из разных щелей. И это очень негативно сказывается на отношении к продукту.

Популярные статьи по теме
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

Автор: Андрей Карпов

В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализат…
Эффект последней строки

Дата: 31 Май 2014

Автор: Андрей Карпов

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
Главный вопрос программирования, рефакторинга и всего такого

Дата: 14 Апр 2016

Автор: Андрей Карпов

Вы угадали, ответ - "42". Здесь приводится 42 рекомендации по программированию, которые помогут избежать множества ошибок, сэкономить время и нервы. Автором рекомендаций выступает Андрей Карпов - тех…
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

Автор: Андрей Карпов

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Любите статический анализ кода!

Дата: 16 Окт 2017

Автор: Андрей Карпов

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

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…

Комментарии (0)

Следующие комментарии

На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять