Первый раунд. Микросервисный фреймворк на Go. Тридцать две тысячи строк.
На огромном экране одновременно стартовали два прогресс-бара. Слева – синий, CodeSafe. Справа – зеленый, BugKiller. Трансляцию смотрели сорок одна тысяча человек, и счетчик продолжал расти.
CodeSafe сканировал чуть быстрее, его полоска первой достигла 100%.
Чат мгновенно взорвался:
«CodeSafe прям летает.»
«Погодите, BugKiller еще не закончил?»
Полоска BugKillerотстала примерно на семь секунд и тоже уперлась в край.
Результаты не выводились сразу. По правилам, каждый раунд проверяла комиссия из пяти экспертов: три технических директора плюсдва ветерана опенсорс-сообщества. Они сверяли каждый алерт вручную, чтобыотделить реальные баги от ложных срабатываний, и только потом публиковали итоговую стату.
Эксперты сгрудились у мониторов. Чат начал нетерпеливобурлить: «Давайте уже!» – «Куда спешить, они код читают построчно».
Через шесть минут цифры появились на экране.
CodeSafe: найденопроблем – 24, подтвержденных багов – 24, ложных срабатываний – 0. Уровень ложных срабатываний: 0%.
BugKiller: найденопроблем – 23, подтвержденных багов – 22, ложных срабатываний – 1. Уровень ложных срабатываний: 4,5%. (Каждая строчка снабжена оценкой критичности и рекомендацией по исправлению).
Председатель комиссии взял микрофон:
— На объеме в тридцать тысяч строк оба инструмента показали себя достойно. CodeSafe нашел на два бага большепри нуле ложных срабатываний, сработав исключительно чисто. У BugKiller одно ложное срабатывание ина два найденных бага меньше, однако система сопровождает каждую находку оценкой влияния и алгоритмом исправления – функционал, которого нет у CodeSafe. В целом, в первом раунде небольшое преимущество за CodeSafe.
Чжао Вэньюань откинулся в кресле и кивнулна камеру:
— У каждого продукта свои сильные стороны. Тем не менее, в условиях стандартизированного ревью кода ключевыми показателями остаются процент обнаружения и точность.
Сообщения в чате неслись сплошным потоком:
«CodeSafe забрал первый раунд?»
«Ноль ложных – это мощно.»
«У BugKiller прикольная фича с анализом рисков, но багов-то он нашел меньше.»
«Всё, NullPointer сольет?»
«Рано паниковать, это только первый раунд.»
Хань Луи сидел с абсолютно каменным лицом. Он лишь скользнул взглядом по экрану, кивнул и сделал глоток воды.
В чате это заметили:«У NullPointer стальные нервы», «Слил раунд и даже бровью не повел», «Реально спокоен или просто делает вид?».
Су Няньнянь смотрела трансляцию, свернувшись клубочком на кровати в своей съемной квартире. Одеяло натянуто до подбородка, ноутбук пристроен на коленях: левая половина экрана – стрим, правая – админка BugKiller. Телефон на зарядке валялся рядом с подушкой в окружении горстки мандариновых корок.
Когда объявили результаты, она застыла на пару секунд. CodeSafe победил?
Она открыла WeChat и отправила Хань Луи сообщение:«Аааа, мы проиграли первый раунд!»
Ответа непоследовало. Впрочем, логично: он же на стриме, в телефон не заглянешь.
Она отложила смартфон и принялась чистить четвертый мандарин. В головещелкали цифры. Первый раунд: тридцать тысяч строк, победа CodeSafe. Второй: сто двадцатьтысяч. Третий: триста пятьдесят тысяч.
В прошлый раз на тесте в восемьдесят тысяч BugKiller уже ушел в отрыв. На ста двадцати разрыв станет только шире.
— Первый раунд изначально был не нашим полем, — произнесла она в пустоту. Никто еене услышал.
Ведущий взял слово:
— Благодарим участников. Результаты первого раунда выведены на экран. Переходим ко второму раунду. Платформа обработки данных на Python, объем кода – около ста двадцати тысяч строк.
— ...Старт.
Прогресс-бары снова пришли в движение.
В этот раз разница в скорости стала очевидна с первой же секунды.
Зеленая полоса BugKiller ползла ровно, примерно в том же темпе, что и в первом раунде.
А вот синяя полоса CodeSafeоткровенно тормозила. До 10% шла нормально, к 20% начала заикаться, а на 30% словно во что-то врезалась: замерла на двесекунды и только потом перескочила на 31%.
Зрители отреагировали быстрее экспертов:
«CodeSafe завис?»
«Нормально всё, 120 тысяч – это вам не шутки, нужно время.»
«BugKiller что-то не виснет, гляньте на зеленуюполосу.»
«Вот и пошла разница в скорости.»
BugKiller добрался до финиша первым. Хань Луи закинул руки за голову, откинулся на спинку кресла и принялся ждать. На экране в аккуратный столбик выстроились пятьдесят восемь предупреждений системы.
Синяя полоска CodeSafe болталасьна 78%.
Чат начал обратный отсчет: «Восемьдесят, пошло дело!», «Почти-почти!», «Да уж, разрывтак разрыв...»
CodeSafe дополз до 100% почти через две минуты.
Зрители негодовали: «В первом раунде разница была семь секунд, вовтором – две минуты!», «На 120 тысячах такой отрыв?», «Кода вчетыре раза больше, а разрыв вырос в десятки раз!»
Комиссия приступила к проверке. В этот раз процесс затянулся. На трансляции было видно, как эксперты сверяют куски кода, хмурятся и возвращаются на шаг назад.
Цифры появились только через одиннадцать минут.
BugKiller: найдено проблем – 60, подтвержденных багов – 58, ложных срабатываний – 2. Уровень ложных срабатываний: 3,4%.
CodeSafe: найдено проблем – 48, подтвержденных багов – 41, ложное срабатывание – 7. Уровень ложных срабатываний: 17,1%.
Председатель комиссиина этот раз не улыбался:
— У CodeSafe семь ложных срабатываний, причем в четырех случаях стандартная логика обработки исключений помечена как баг. Это говорит о том, что при увеличении объема кодовой базы движок теряет контекст. BugKiller выявил на семнадцать потенциальных проблембольше, пятнадцать из которых мы подтвердили как реальные баги.
Онлайн перевалил за сорок шесть тысяч. Чат летел с бешеной скоростью:
«17%??»
«Эксперт же сказал: на больших объемахон сдувается.»
«С 17% ложных срабатываний егов прод вообще пускать нельзя.»
«BugKiller просто танк, 3,4%»
Чжао Вэньюань смотрел на экран. Трансляцию на паузу не поставишь. Логи не проверишь. На него смотрели все.
— Проекты на сто двадцать тысяч строк действительно предъявляют повышенные требования к движку, — произнес он. — В данный момент мы занимаемся оптимизацией и подготовкой следующего релиза.
Голос Хань Луи раздался справа – негромкий, но микрофон уловил его безупречно:
— Доктор Чжао, давайте начнем третий раунд.
Чат: «Даже отмазаться недал», «Идеальное проявление уважения – прикончить быстро».
Ведущий бросил взгляд на обоих участников:
— Третий раунд. Ядро корпоративной Java-системы. Объем кода – около трехсот пятидесяти тысяч строк.
Онлайн пробил отметку в пятьдесят тысяч. Чат замер на мгновение – пятьдесят тысяччеловек одновременно затаили дыхание.

Комментарии

Загрузка...