第二十八章 讓產品說話
第一輪。Go微服務框架。三萬兩千行。
大屏幕上兩個進度條同時跑起來。左邊藍色CodeSafe,右邊綠色BugKiller。在線觀眾四萬一千,還在漲。
CodeSafe的掃描速度稍快,進度條先到100%。
彈幕立刻刷起來。
「CodeSafe速度好快」
「等等BugKiller還沒跑完?」
BugKiller的進度條慢了大概七秒,跟著到頂。
掃描結果不直接上屏。按賽制,每輪由五人技術專家組現場核驗,三家公司技術負責人加兩位開源社區資深貢獻者,逐條確認真Bug還是誤報,再把核驗數據投上去。
專家組圍著顯示器開始過結果。彈幕等得有點急,「快快快」「急什麼人家要逐條看代碼」。
六分鐘後,核驗結果上屏。
CodeSafe:標記總數24個,確認Bug 24個,誤報0個。誤報率0%。
BugKiller:標記總數23個,確認Bug 22個,誤報1個。誤報率4.5%。每條附影響評估和修復路徑。
專家組組長拿話筒:「三萬行級別兩款工具都表現不錯。CodeSafe多檢出兩個,零誤報,乾淨利落。BugKiller有一個誤報,少檢出兩個,但每條結果附帶的影響評估和修復路徑是CodeSafe沒有的功能。綜合來看,第一輪CodeSafe略占優。」
趙文淵靠在椅背上,對著鏡頭點了點頭。「兩家產品各有所長。不過在標準化的代碼審查場景下,檢出率和精確率還是硬指標。」
彈幕滾得很快。
「CodeSafe第一輪贏了?」
「零誤報確實漂亮」
「BugKiller那個影響評估挺有意思的,但檢出少了兩個」
「完了NullPointer要輸?」
「才第一輪別急」
韓路一全程沒什麼反應。他看了一眼大屏上的數據,點了點頭,然後低頭喝了口水。
彈幕有人注意到了:「NullPointer這心態也太穩了」「輸了一輪跟沒事人一樣」「是穩還是裝的?」
蘇念念窩在出租屋的床上看直播,被子裹到胸口,筆記本電腦架在膝蓋上,屏幕左半邊直播間右半邊BugKiller後台。手機扔在枕頭邊充著電,旁邊散著一小堆橘子皮。
第一輪結果出來的時候她盯著屏幕愣了兩秒。CodeSafe贏了?
她打開微信給韓路一發了一條:「啊啊啊第一輪輸了」
沒回。她想了想,也對,他在直播,不可能看手機。
她放下手機,開始剝第四顆橘子。心裡默算:第一輪三萬行,CodeSafe贏。第二輪十二萬行。第三輪三十五萬行。
上次八萬行的對比測試,BugKiller就已經拉開差距了。十二萬行只會更大。
「第一輪本來就不是我們的主場。」她對著屏幕說了一句。沒人聽。
主持人:「感謝雙方。第一輪結果已在屏幕上呈現。現在進入第二輪,Python數據處理平台,代碼量約十二萬行。」
「開始。」
進度條再次跑起來。
這一次,速度差異從第一秒就開始了。
BugKiller的綠色進度條勻速推進,跟第一輪節奏差不多。
CodeSafe的藍色進度條明顯慢了。10%正常,20%開始拖,到30%的時候像遇到了什麼東西,頓了兩秒才跳到31%。
彈幕比專家敏感。
「CodeSafe卡了?」
「正常正常,12萬行確實需要時間」
「BugKiller沒卡啊,你看那個綠條」
「速度差距出來了」
BugKiller先跑完。韓路一靠在椅背上,雙手交叉放在腦後,等著。屏幕上BugKiller的結果已經靜靜地排好了,五十八條檢出整整齊齊。
CodeSafe的藍色進度條還在78%。
彈幕開始倒計時。「80了80了」「快了快了」「這個速度差……」
等了將近兩分鐘,CodeSafe才到100%。
彈幕:「第一輪只差七秒,第二輪差了兩分鐘」「十二萬行拉開這麼多?」「代碼量翻四倍,差距翻十幾倍」
專家組核驗。這次比第一輪久。彈幕能看到專家們反覆對照代碼,有人皺眉翻回去重看。
十一分鐘後,核驗結果上屏。
BugKiller:標記總數60個,確認Bug 58個,誤報2個。誤報率3.4%。
CodeSafe:標記總數48個,確認Bug 41個,誤報7個。誤報率17.1%。
專家組組長這次沒笑。「CodeSafe有7個誤報,其中4個是把正常的異常處理邏輯標成Bug,這說明代碼規模增大後,檢測引擎的上下文理解在下降。BugKiller多檢出的17個裡,確認15個為真實Bug。」
在線人數四萬六千。彈幕越來越密了。
「17%???」
「專家說了,規模一大就不行」
「17%的誤報率在生產環境裡根本不能用」
「BugKiller穩如老狗,3.4%」
趙文淵盯著屏幕上的數字。直播里不能暫停,不能查日誌。所有人都在看著他。
「十二萬行項目確實對檢測引擎有更高要求。我們現在正在進行下個版本的疊代和優化。」
韓路一的聲音從右邊傳過來。不大,但收音很清楚。
「趙博士,開始第三輪吧。」
彈幕:「不給他解釋的時間」「尊重對手的方式,快點結束」
主持人看了一眼兩邊。
「第三輪,Java企業級核心系統,代碼量約三十五萬行。」
在線人數破五萬。彈幕停了一瞬間,五萬人同時屏住了呼吸。
大屏幕上兩個進度條同時跑起來。左邊藍色CodeSafe,右邊綠色BugKiller。在線觀眾四萬一千,還在漲。
CodeSafe的掃描速度稍快,進度條先到100%。
彈幕立刻刷起來。
「CodeSafe速度好快」
「等等BugKiller還沒跑完?」
BugKiller的進度條慢了大概七秒,跟著到頂。
掃描結果不直接上屏。按賽制,每輪由五人技術專家組現場核驗,三家公司技術負責人加兩位開源社區資深貢獻者,逐條確認真Bug還是誤報,再把核驗數據投上去。
專家組圍著顯示器開始過結果。彈幕等得有點急,「快快快」「急什麼人家要逐條看代碼」。
六分鐘後,核驗結果上屏。
CodeSafe:標記總數24個,確認Bug 24個,誤報0個。誤報率0%。
BugKiller:標記總數23個,確認Bug 22個,誤報1個。誤報率4.5%。每條附影響評估和修復路徑。
專家組組長拿話筒:「三萬行級別兩款工具都表現不錯。CodeSafe多檢出兩個,零誤報,乾淨利落。BugKiller有一個誤報,少檢出兩個,但每條結果附帶的影響評估和修復路徑是CodeSafe沒有的功能。綜合來看,第一輪CodeSafe略占優。」
趙文淵靠在椅背上,對著鏡頭點了點頭。「兩家產品各有所長。不過在標準化的代碼審查場景下,檢出率和精確率還是硬指標。」
彈幕滾得很快。
「CodeSafe第一輪贏了?」
「零誤報確實漂亮」
「BugKiller那個影響評估挺有意思的,但檢出少了兩個」
「完了NullPointer要輸?」
「才第一輪別急」
韓路一全程沒什麼反應。他看了一眼大屏上的數據,點了點頭,然後低頭喝了口水。
彈幕有人注意到了:「NullPointer這心態也太穩了」「輸了一輪跟沒事人一樣」「是穩還是裝的?」
蘇念念窩在出租屋的床上看直播,被子裹到胸口,筆記本電腦架在膝蓋上,屏幕左半邊直播間右半邊BugKiller後台。手機扔在枕頭邊充著電,旁邊散著一小堆橘子皮。
第一輪結果出來的時候她盯著屏幕愣了兩秒。CodeSafe贏了?
她打開微信給韓路一發了一條:「啊啊啊第一輪輸了」
沒回。她想了想,也對,他在直播,不可能看手機。
她放下手機,開始剝第四顆橘子。心裡默算:第一輪三萬行,CodeSafe贏。第二輪十二萬行。第三輪三十五萬行。
上次八萬行的對比測試,BugKiller就已經拉開差距了。十二萬行只會更大。
「第一輪本來就不是我們的主場。」她對著屏幕說了一句。沒人聽。
主持人:「感謝雙方。第一輪結果已在屏幕上呈現。現在進入第二輪,Python數據處理平台,代碼量約十二萬行。」
「開始。」
進度條再次跑起來。
這一次,速度差異從第一秒就開始了。
BugKiller的綠色進度條勻速推進,跟第一輪節奏差不多。
CodeSafe的藍色進度條明顯慢了。10%正常,20%開始拖,到30%的時候像遇到了什麼東西,頓了兩秒才跳到31%。
彈幕比專家敏感。
「CodeSafe卡了?」
「正常正常,12萬行確實需要時間」
「BugKiller沒卡啊,你看那個綠條」
「速度差距出來了」
BugKiller先跑完。韓路一靠在椅背上,雙手交叉放在腦後,等著。屏幕上BugKiller的結果已經靜靜地排好了,五十八條檢出整整齊齊。
CodeSafe的藍色進度條還在78%。
彈幕開始倒計時。「80了80了」「快了快了」「這個速度差……」
等了將近兩分鐘,CodeSafe才到100%。
彈幕:「第一輪只差七秒,第二輪差了兩分鐘」「十二萬行拉開這麼多?」「代碼量翻四倍,差距翻十幾倍」
專家組核驗。這次比第一輪久。彈幕能看到專家們反覆對照代碼,有人皺眉翻回去重看。
十一分鐘後,核驗結果上屏。
BugKiller:標記總數60個,確認Bug 58個,誤報2個。誤報率3.4%。
CodeSafe:標記總數48個,確認Bug 41個,誤報7個。誤報率17.1%。
專家組組長這次沒笑。「CodeSafe有7個誤報,其中4個是把正常的異常處理邏輯標成Bug,這說明代碼規模增大後,檢測引擎的上下文理解在下降。BugKiller多檢出的17個裡,確認15個為真實Bug。」
在線人數四萬六千。彈幕越來越密了。
「17%???」
「專家說了,規模一大就不行」
「17%的誤報率在生產環境裡根本不能用」
「BugKiller穩如老狗,3.4%」
趙文淵盯著屏幕上的數字。直播里不能暫停,不能查日誌。所有人都在看著他。
「十二萬行項目確實對檢測引擎有更高要求。我們現在正在進行下個版本的疊代和優化。」
韓路一的聲音從右邊傳過來。不大,但收音很清楚。
「趙博士,開始第三輪吧。」
彈幕:「不給他解釋的時間」「尊重對手的方式,快點結束」
主持人看了一眼兩邊。
「第三輪,Java企業級核心系統,代碼量約三十五萬行。」
在線人數破五萬。彈幕停了一瞬間,五萬人同時屏住了呼吸。