Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Сколько стоит одна оплошность в наших программах, либо какие ошибки бывают в PVS-Studio и CppCat

Anna | 24.06.2014 | нет комментариев

В списке вопросов, которые неизменно задают нам позже прочтения наших статей есть вопрос: «А вы проверяете код своего анализатора им самим?». И дается результат в том ключе, что у нас неизменно проверяется код во время написания с поддержкой режима инкрементального обзора (проверки файлов сразу позже компиляции). А также запускаются ночные проверки для каждого кода. И в связи с этим мы, к сожалению (издевка), никогда не сумеем написать статью про ошибки в наших программных продуктах.

Впрочем сегодня – именно статья про одну нашу ошибку и про то, сколько она нам стоила. Заинтриговал?

Мой сегодняшний рассказ будет в лицах, следственно вначале «титры»:

  • Михаил, пользователь CppCat;
  • Евгений (я), автор статьи, имеет отношение к PVS-Studio и CppCat;
  • Андрей, мой сотрудник, пишет изредка различные статьи;
  • Павел, мой сотрудник, знает все про интеграцию в Visual Studio;

Некогда в пятницу, 21 февраля мы опубликовали статью “Второстепенный итог: проверяем Firebird с поддержкой PVS-Studio“, в комментариях к которой объявился Михаил с таким комментарием:

CppCat — то, что необходимо! Вам бы сделать обособленный пост про него. Буду выпрашивать у начальства, чай недорого :)

Улыбнувшись, мой сотрудник Андрей ему ответил, что теснее три статьи было про CppCat. Правда сотрудник здесь же получил «нагоняй» за то, что никто не знает про наш новейший продукт. Это было в 16:16 по Москве…

Теснее в 16:21 в моей CppCat-почте было письмо от Михаила с «хотелкой». Михаил хотел, Дабы сообщения об ошибках CppCat выдавались не в отдельное окно, как теперь, а в стандартное окно ошибок Visual Studio. С моей точки зрения «хранителя продукта» CppCat это пожелание выглядело нецелесообразным, и я попытался объяснить в почте, что у нас намеренно сделано отдельное окно, Дабы не путать наши сообщения и сообщения Visual Studio. Что это дюже комфортно, так как разрешает нам делать окно специализированным и т.п. Но Михаил «не унимался», приводя примитивный довод:

— А как же мне тогда увидеть позже перекомпиляции файла ошибки? Вот бы они сразу в окно выдавались…

Но чай именно с этой целью у нас есть «киллер-фича» инкрементальный обзор! Позже перекомпиляции файлов механически запускается анализатор кода. И только если нашлись настоящие ошибки, выдается уведомление в трее и меняется заголовок окна анализатора. В окне возникает фраза о том, что обнаружены новые ошибки. Режим инкрементального обзора дозволено включить/выключить в меню.

— Ну да, — ответил Михаил, — галочка «Инкрементальный обзор» у меня стоит. Но как я узнаю, что нашлись ошибки?

Позже пяти писем, включая скриншоты, стало ясно, что правда все настроено верно, ни в трее не выдается уведомления, ни текст окна не меняется. А время было шестой час вечера пятницы…

С мыслью: «Давным-давно не брал я в руки шашек (с позавчера)!», я напросился к Михаилу на компьютер через удаленный доступ с AMMYY Admin. Потыкавшись в свою программу я осознал, что подлинно уведомлений о новых ошибках нет, правда программа как бы бы работает. Время близилось к шести вечера, и я пошел к коллеге Павлу, тот, что отвечает за интеграцию в Visual Studio. Показал ему, что я делаю на компьютере пользователя и что не работает уведомление.

Через тридцать секунд Павел сказал:

— Евгений… Ну что же ты позабыл, что при команде «Пересобрать все»/«Rebuild All», у нас намеренно не стартует инкрементальный обзор. Это сделано осмысленно и все верно. И вообще, нужно тебе чаще глядеть на свой личный продукт. А то теснее позабыл все. Лишь бы в почте на письма отвечать, да статейки про бизнес писать…

Покраснев, я отошел проверять… Впрочем уведомления не было ни при пересборке одного файла, ни при пересборке нескольких файлов. Я испробовал на ином плане – итог тот же. Не работает. Причем не работает дюже значимая функция, которая является киллер-фичей нашего инструмента. Напомню, что все это я пробовал на удаленной машине пользователя. Я пошел к Павлу вновь, но было теснее примерно шесть. И пользователю хотелось домой, и Павлу… Допустимо в связи с этим мы совместно так и не сумели осознать, отчего не работает. Решив в понедельник выдать версию с отладочными логами, мы ушли по домам.

Все выходные я думал об этой задаче. Повинен ли наш продукт? Если да, то когда могла возникнуть в коде эта задача? И сколько людей НЕ ПРИОБРЕЛО наш продукт, так как дюже значимая штука работала не так как должна.

На этой печальной ноте пришел понедельник. Мы выдали пользователю особую версию с отладочными логами. Он нам их прислал. По логам было не ясно, к сожалению. Мы сделали больше детальные логи, максимально детально описали инструкцию по воспроизведению… Не помогало. По логам выглядело так, как словно код не работает, правда не трудиться не мог.

За понедельник и вторник мы выдали Михаилу несколько версий с максимально детализированными отладочными логами. Но осознать, что происходит не могли. Уведомления о новых ошибках легко не было. У него. А у нас было, неизменно.

В середине вторника Павел позвал меня:

— Евгений, ты не поверишь… Но у меня не показывается уведомление о обнаруженных ошибках в CppCat!

Вы думаете нам помогли отладочные логи? Нет, Павел НЕчА?ННО кликнул на кнопочку auto-hide в окне CppCat внутри Visual Studio. И наше окно стало механически скрываться, когда уводишь мышку от него. От того что никто из разработчиков не пользуется у нас кнопкой auto-hide, то мы и подумать не могли, что в этом режиме наша нотификация подлинно не работает!

То есть если auto-hide отключен (обыкновенный режим), то уведомления о новых ошибках есть, а если auto-hide включен, то уведомлений о новых ошибках нет.

Я попросил пользователя Михаила проверить, подлинно ли дело в auto-hide. Он удостоверил, что в нем.

Позже этого теснее было делом техники исправить ошибку. Оказалось, что код плагина ненормально обрабатывал определенный жанр окна. Для программистов я попросил Павла описать задачу и ее решение, но тут данный текст не привожу, так как он будет внятен только разработчикам плагинов для Visual Studio.

Выходит, мы сумели повторить ошибку во вторник во 2-й половине дня. В среду выдали поправленную бета-версию Михаилу.

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

Напомню для тех читателей, кто не знаком с тем, что мы делаем. Мы разрабатываем, продвигаем и продаем два собственных программных продукта CppCat для индивидуальных разработчиков за $250 и PVS-Studio, минимальная лицензия которого на команду до 9 человек стоит чуть огромнее €5000.

Так вот пообсуждав лицензионные вопросы, Михаил видимо переслал письмо начальству и во вторник же вечером я обговаривал с его руководителем вопросы лицензирования PVS-Studio. Мы достаточно стремительно обо каждому побеседовали, они пришли к итогу, что им необходим не CppCat, а PVS-Studio.

Но что же с той оплошностью? В среду мы выдали Михаилу поправленную бета-версию, он проверил, что все работает. В среду же я отправил руководителю Михаила счет на оплату PVS-Studio. В четверг я увидел на нашем счету деньги за лицензию. И решил, что недурно бы описать эту историю, внезапно кому-то она покажется увлекательной.

Так исправление одной ошибки в продукте за $250 дало нам продажу иного нашего продукта за вовсе другие деньги. И все это в течение одной недели, чай сегодня, в пятницу 28 февраля, вы теснее читаете статью об этой истории!

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

P.S. Большое спасибо нашему пользователю Михаилу, тот, что помог нам диагностировать ошибку, без него бы этой истории не было. Наши заказчики-программисты – самые лучшие пользователи в мире!

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB