本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文介紹如何設計屬于您業務場景的代碼檢測方案。
步驟一:新建檢測方案
登錄云效代碼管理 Codeup首頁,單擊左側導航欄 。
配置檢測方案。
平臺已內置部分方案供參考使用,您也可以結合自身的業務場景復制或新建適合自己的檢測方案。
內置方案
可以根據自身情況通過圖示方式復制或新建自己的方案。
復制方案
選擇適合您的推薦檢測方案進行復制。
新建檢測方案
編譯配置
說明為了避免使用時需要重復填寫編譯配置參數,推薦在方案中設置好默認編譯配置。
部分規則需編譯后運行,如果未填寫配置編譯命令,會因缺失編譯參數導致檢測任務無效。
根據檢測規則提示進行編譯配置即可。
步驟二:按需調整方案內容
選擇檢測方案后,可以按需調整方案中已有的規則內容和方案配置。
方案創建者或Codeup企業管理員可以編輯和刪除方案,其他人只能查看和復制方案。
調整檢測規則內容。
以Java為例,目前Codeup支持的內置檢測規則如下:
敏感信息檢測
依賴包漏洞檢測
源碼漏洞檢測
Java 開發規約檢測
代碼補丁推薦
Java安全檢測
如需加入其它的方案規則包,可以參考內置方案示圖④添加平臺提供的規則包或自定義規則包。
針對每一條規則,支持編輯其問題等級,部分規則允許自定義檢測參數,如通過正則表達式限制檢測范圍。同時還支持停用不適合的規則或重新啟用規則。
警告停用規則有以下影響:
規則已發現的問題將在下一次檢測后自動關閉。
運行當前檢測方案時將不再執行對應規則。
檢測方案關聯檢測任務。
新建檢測任務。
針對檢測方案的修改行為,都將記錄在方案的變更歷史中,供追溯查看。
調整檢測方案設置。
在方案的【設置】頁面,可以調整方案的名稱,填寫方案的描述,設置檢測的文件白名單,單擊保存。
白名單路徑下的文件將自動跳過檢測,即不執行檢測。
重要刪除方案時,需要確保當前方案未與任何檢測任務關聯,否則需要先與檢測任務解綁,然后刪除方案,避免對運行的檢測任務造成影響。
步驟三:將檢測方案關聯至代碼庫
將方案關聯到代碼庫后形成可運行的檢測任務,一個代碼庫最多創建一個檢測任務,該任務可選擇不同分支多次運行。
。
選擇合適的檢測任務項。
除了手動觸發外,支持設置檢測任務的自動觸發方式,包括提交觸發方式和合并請求觸發,若選擇提交觸發,需要指定關注的分支,支持正則匹配。若選擇合并請求觸發,則該庫發生的合并請求,將對源分支合并到目標分支的代碼進行檢測。
說明針對運行時需要編譯的檢測包,需要設置檢測編譯參數,如果在檢測方案上已經設置過「默認編譯配置」,則會默認繼承自動填寫至檢測任務創建界面,同時也支持在檢測任務側對編譯配置進行修改,該修改僅影響當前檢測任務,不影響檢測方案。
勾選「已閱讀并同意檢測服務協議」后即可立即新建并針對默認分支執行一次代碼檢測。
后續也可以通過自動觸發或手動觸發的方式對指定分支進行檢測。
步驟四:查看檢測結果
基于檢測任務查看檢測結果。
進入檢測任務,選擇概覽,查看當前分支最近一次成功的全量檢測結果和問題列表。
概覽內容:
檢測結果:通過狀態,以及對應的問題個數和門禁閾值;
問題總覽:查看未解決的問題個數和已解決的問題個數;
問題嚴重等級分布:警告、嚴重和建議問題個數分布情況;
問題類型分布:安全和規范類問題個數分布;
引入人分布:列出不同用戶引入的各類問題數量;
嚴重問題最多的規則分布:命中嚴重問題數最多的規則排名;
問題趨勢:查看各等級問題的存量趨勢;
問題列表
問題列表以嚴重等級和解決狀態排序,單擊問題行可查看問題詳情,針對不關心的問題可以進行忽略,忽略后該問題在該分支將不會再報出:
運行歷史
代碼檢測使用云效Flow流水線運行,針對檢測運行失敗的情況,支持單擊頁面查看運行日志前往云效流水線產品Flow查看對應錯誤日志快速定位和解決問題:
如果最近一次檢測運行失敗了,進入檢測任務詳情將保留最近一次成功的檢測結果,同時提醒最近一次檢測失敗和時間信息,支持前往執行日志查看問題并快速解決。
在代碼庫提交和合并請求中查看檢測結果
提交檢測結果
在提交、分支視圖下,如果對應Commit有存在代碼檢測結果,在列表上可以通過卡片快捷查看,單擊可查看檢測問題詳情。
合并請求檢測結果
當選擇了合并請求觸發,在合并請求列表和合并詳情的合并條件中可以看到自動化檢測的結果。
運行完成后,單擊「查看詳情」可以在當前合并請求的文件變更視圖中查看檢測出的問題詳情,單擊可直接跳轉至問題代碼行。
常見問題
1. 如何將檢測設置為合并請求卡點?
代碼檢測作為評審的輔助手段,可以減輕代碼評審的成本,通過自動化的方式對代碼中的規范、安全漏洞進行篩查,并快速暴露出來。
在合并請求中,除了人工評審之外,支持將代碼檢測作為合并代碼前的卡點,當檢測設置的門禁不通過時,不允許任何人合并代碼,避免質量不達標的代碼被合并到生產分支。
步驟一:設置檢測閾值門禁
首先,需要設置期望卡點的門禁閾值。
進入當前庫的檢測任務中,可以看到合并請求門禁設置項,默認不允許存在嚴重問題,不限警告和建議問題數,可以根據業務情況自行修改:
步驟二:設置保護分支卡點
接下來,點擊上圖中的「前往設置合并請求卡點」,或者打開庫設置-分支設置-保護分支規則。
針對期望被合并保護的分支新建保護分支規則,選擇分支名,然后在規則設置中打開「要求合并前通過自動化執行檢查」,勾選代碼檢測任務:
步驟三:查看合并檢測卡點
當檢測任務被設置為目標分支的卡點之后,針對被保護的目標分支發起的合并都需要通過檢測。檢測的內容為基于源分支需要合并到目標分支的差異代碼:
運行結束后可以點擊「查看詳情」跳轉查看代碼行內的問題:
對于用于合并請求卡點的檢測任務,如果由于沒有設置檢測任務的自動觸發條件導致檢測未運行,可以在頁面手動點擊「立即運行」觸發執行,對待合并代碼內容進行檢測:
卡點的檢測任務被刪除的處理說明
如果檢測任務已經被設置為卡點,即使手動刪除了檢測任務,合并的檢測卡點仍然是生效的,避免沒經過檢測的代碼被合并保護分支。
此時合并請求中舊的已刪除的檢測任務卡點是失效狀態,這種情況需要管理員在當前庫新建檢測任務,新的檢測任務將自動替換舊的檢測任務繼續作為合并請求卡點生效。
2. 代碼檢測資源消耗如何計算?
檢測將使用云效Flow流水線資源進行運行,運行的并發數和運行時長將通過流水線資源進行計算,在流水線資源額度內可正常使用檢測,如果超出流水線資源額度,可以通過升級套餐或購買資源包獲取更多流水線運行資源。
具體當月資源消耗情況可前往云效流水線Flow頁面左下角「資源」中進行查看:
3.如何關閉代碼檢測?
進入代碼庫,刪除對應倉庫的檢測任務即可,對應系統流水線將自動刪除。